| = 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 |