forked from brl/citadel
77 lines
2.5 KiB
Plaintext
77 lines
2.5 KiB
Plaintext
|
= OEQA (v2) Framework =
|
||
|
|
||
|
== Introduction ==
|
||
|
|
||
|
This is version 2 of the OEQA framework. Base clases are located in the
|
||
|
'oeqa/core' directory and subsequent components must extend from these.
|
||
|
|
||
|
The main design consideration was to implement the needed functionality on
|
||
|
top of the Python unittest framework. To achieve this goal, the following
|
||
|
modules are used:
|
||
|
|
||
|
* oeqa/core/runner.py: Provides OETestResult and OETestRunner base
|
||
|
classes extending the unittest class. These classes support exporting
|
||
|
results to different formats; currently RAW and XML support exist.
|
||
|
|
||
|
* oeqa/core/loader.py: Provides OETestLoader extending the unittest class.
|
||
|
It also features a unified implementation of decorator support and
|
||
|
filtering test cases.
|
||
|
|
||
|
* oeqa/core/case.py: Provides OETestCase base class extending
|
||
|
unittest.TestCase and provides access to the Test data (td), Test context
|
||
|
and Logger functionality.
|
||
|
|
||
|
* oeqa/core/decorator: Provides OETestDecorator, a new class to implement
|
||
|
decorators for Test cases.
|
||
|
|
||
|
* oeqa/core/context: Provides OETestContext, a high-level API for
|
||
|
loadTests and runTests of certain Test component and
|
||
|
OETestContextExecutor a base class to enable oe-test to discover/use
|
||
|
the Test component.
|
||
|
|
||
|
Also, a new 'oe-test' runner is located under 'scripts', allowing scans for components
|
||
|
that supports OETestContextExecutor (see below).
|
||
|
|
||
|
== Terminology ==
|
||
|
|
||
|
* Test component: The area of testing in the Project, for example: runtime, SDK, eSDK, selftest.
|
||
|
|
||
|
* Test data: Data associated with the Test component. Currently we use bitbake datastore as
|
||
|
a Test data input.
|
||
|
|
||
|
* Test context: A context of what tests needs to be run and how to do it; this additionally
|
||
|
provides access to the Test data and could have custom methods and/or attrs.
|
||
|
|
||
|
== oe-test ==
|
||
|
|
||
|
The new tool, oe-test, has the ability to scan the code base for test components and provide
|
||
|
a unified way to run test cases. Internally it scans folders inside oeqa module in order to find
|
||
|
specific classes that implement a test component.
|
||
|
|
||
|
== Usage ==
|
||
|
|
||
|
Executing the example test component
|
||
|
|
||
|
$ source oe-init-build-env
|
||
|
$ oe-test core
|
||
|
|
||
|
Getting help
|
||
|
|
||
|
$ oe-test -h
|
||
|
|
||
|
== Creating new Test Component ==
|
||
|
|
||
|
Adding a new test component the developer needs to extend OETestContext/OETestContextExecutor
|
||
|
(from context.py) and OETestCase (from case.py)
|
||
|
|
||
|
== Selftesting the framework ==
|
||
|
|
||
|
Run all tests:
|
||
|
|
||
|
$ PATH=$PATH:../../ python3 -m unittest discover -s tests
|
||
|
|
||
|
Run some test:
|
||
|
|
||
|
$ cd tests/
|
||
|
$ ./test_data.py
|