1
0
mirror of https://git.yoctoproject.org/poky synced 2026-05-08 05:09:24 +00:00

oeqa/core/README: Improve documentation

Most of the text include on this text refactor came from [1].

[1] http://lists.openembedded.org/pipermail/openembedded-architecture/2016-December/000351.html

(From OE-Core rev: 77635ffa3b621add9894ed247dafe146f4af1e84)

Signed-off-by: Leonardo Sandoval <leonardo.sandoval.gonzalez@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Leonardo Sandoval
2017-05-26 15:37:48 -05:00
committed by Richard Purdie
parent 9153e6dd16
commit 1974a68926
+60 -21
View File
@@ -1,38 +1,77 @@
= OEQA Framework =
= OEQA (v2) Framework =
== Introduction ==
This is the new OEQA framework the base clases of the framework
are in this module oeqa/core the subsequent components needs to
extend this classes.
This is the new (version 2) OEQA framework. Base clases are located inside the
'oeqa/core' folder and subsequent components needs to extend from these.
A new/unique runner was created called oe-test and is under scripts/
oe-test, this new runner scans over oeqa module searching for test
components that supports OETestContextExecutor implemented in context
module (i.e. oeqa/core/context.py).
The main design consideration was to implement the needed functionality
on top of Python unittest framework. To archive the latter, the following
modules are present:
For execute an example:
* oeqa/core/runner.py: Provides OETestResult and OETestRunner base
classes extending the unittest ones. This class has the support for
export results to different formats currently RAW and XML.
$ source oe-init-build-env
$ oe-test core
* oeqa/core/loader.py: Provides OETestLoader extending unittest ones,
also implements unified way for decorator support and for filtering test
cases.
For list supported components:
* oeqa/core/case.py: Provides OETestCase base class extending
unittest.TestCase and provides access to the Test data (td), Test context
and Logger functionality.
$ oe-test -h
* oeqa/core/decorator: Provides OETestDecorator a new class to implement
decorators for Test cases.
== Create new Test component ==
* 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.
Usally for add a new Test component the developer needs to extend
OETestContext/OETestContextExecutor in context.py and OETestCase in
case.py.
In the other hand, a new 'oe-test' runner is located under 'scripts', allowing scans for components
that supports OETestContextExecutor (see below).
== How to run the testing of the OEQA framework ==
== 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, additionally provides
access to the Test data and could have custom methods, attrs.
== oe-test ==
The new tool oe-test (located at scripts) 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
implements 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
$ PATH=$PATH:../../ python3 -m unittest discover -s tests
Run some test:
$ cd tests/
$ ./test_data.py
$ cd tests/
$ ./test_data.py