Twister 状态
什么是 Twister 状态?
Twister 状态以全面、易懂的方式表示以下对象的当前状态:
HarnessTestCaseTestSuiteTestInstance
实际使用中,多数用户关注的是 Twister 运行结束后实例和用例的状态。
小技巧
术语回顾:
Harness 是 Twister 内部的 Python 类,用于捕获并分析外部程序输出。它不出现在最终报告中,因此本页为清晰起见不再展开。
TestCase,也称 Case,是验证某项断言的代码,是 Zephyr 测试的最小单位。
TestSuite,也称 Suite,是一组用例。可通过 testcase.yaml 按套件修改 Twister 行为。归为一组的用例应有足够共同点,才适合让 Twister 统一处理。
TestInstance,也称 Instance,是套件在某个平台上的实例。Twister 通常报告实例结果,尽管报告中称其为“Suites”。适用于套件的状态也适用于实例。本节无需区分二者,所说“套件”同样指实例。
更详细说明见 此处。
可能的 Twister 状态
代码中 和 文本中 表示状态名称的使用场合:前者主要供 Twister 内部使用并出现在日志中,后者用于 JSON 报告。
备注
Twister 还有两个内部状态:NONE 是用例和套件的初始状态,STARTED 表示用例正在执行。它们不应出现在最终报告中。报告文件出现这些非终态,说明 Twister 存在问题。
Case and Suite Status combinations
↓ 用例套件 → |
FILTER |
ERROR |
FAIL |
PASS |
NOTRUN |
SKIP |
|---|---|---|---|---|---|---|
FILTER |
✓ |
✕ |
✕ |
✕ |
✕ |
✕ |
ERROR |
✕ |
✓ |
✕ |
✕ |
✕ |
✕ |
BLOCK |
✕ |
✓ |
✓ |
✕ |
✕ |
✕ |
FAIL |
✕ |
✓ |
✓ |
✕ |
✕ |
✕ |
PASS |
✕ |
✓ |
✓ |
✓ |
✕ |
✕ |
NOTRUN |
✕ |
✕ |
✕ |
✕ |
✓ |
✕ |
SKIP |
✕ |
✓ |
✓ |
✓ |
✕ |
✓ |
✕ 表示正常 Twister 运行中不应出现的组合,即列所示状态的套件不应包含行所示状态的用例。
✓ 表示有效组合。
各套件状态的详细说明
FILTER:表示整个套件已被本次 Twister 运行的静态过滤器排除,因此其中所有用例也应为该状态。
ERROR:套件执行测试时遇到问题,至少有一个用例为
ERROR或BLOCK。此状态优先于所有其他用例状态,因此该套件中可包含任意有效终态的用例。FAIL:套件中至少一个用例未满足其断言。在未满足 ERROR 条件时,此状态优先于其他用例状态。
PASS:套件正常通过,不得包含
BLOCK、ERROR或FAIL用例,因为这些状态表示套件运行有问题。NOTRUN:整个套件仅构建而未运行,因此其中所有用例都必须未运行。可运行性按套件决定,所以其用例只适用
NOTRUN。SKIP:整个套件在运行时被跳过,所有用例也必须为
SKIP。