class ResultSkippedAfterCritical(ResultVisitor):
def visit_suite(self, suite):
suite.set_criticality(critical_tags='Critical')
for test in suite.tests:
if test.status == 'FAIL' and "Critical failure occurred" in test.message:
test.status = 'NOT_RUN'
test.message = 'Skipping test execution after critical failure.'
在实现跳过状态之前,如果关键测试失败,可以使用exitonfailure停止进一步的执行,然后更改输出.xml(以及测试结果.html)将这些测试显示为“不运行”(灰色),而不是“失败”(红色)。在
下面是一个示例(在robotframework3.1.1和python3.6上测试):
首先创建一个扩展抽象类ResultVisitor的新类:
假设您已经创建了套件(例如使用
^{pr2}$TestSuiteBuilder()
),那么在不创建的情况下运行它报告.html以及日志.html公司名称:注意,我使用了“Critical”作为关键测试的标识标记,以及exitonfailure选项。在
然后,再次访问输出.xml,并创建报告.html以及日志.html从中:
它应显示严重故障后的所有测试,状态为灰色=“不运行”:
你无能为力,robot只支持两个测试状态值:通过和失败。您可以将测试标记为非关键测试,这样它就不会中断构建,但它仍将在日志和报告中显示为已运行。在
机器人核心团队表示,他们将不支持这一功能。有关详细信息,请参见issue 1732。在
即使robot不支持跳过测试的概念,您也可以选择编写一个脚本来扫描输出.xml并删除以某种方式标记为跳过的测试(可能通过向测试添加标记)。您还必须调整xml中失败测试的计数。一旦你修改了输出.xml文件,可以使用rebot重新生成日志和报表文件。在
如果您只需要对日志/报告文件进行更改,您应该查看一下here实现
--prerebotmodifier
选项的SuiteVisitor。正如布莱恩·奥克利所说,如果你不记住这一点,这可能会使你的及格/不及格人数减少。在目前看来不可能真正改变之前的测试状态输出.xml已创建,但存在plans to implement it in RF 3.0。还有一个关于a skip status的讨论
另一个更复杂的解决方案是通过实现一个listener来创建自己的输出文件,该选项与
--listener
选项一起使用,该选项可以根据您的需要创建一个输出文件(可能与原始文件一起使用)输出.xml). 在也有可能在测试执行期间设置标记,但我还不熟悉这一点,所以我不能真正告诉任何关于atm的信息。这可能是解释这些依赖关系失败的另一种可能,因为在生成日志/报告时可以忽略某些标记的关键字
相关问题 更多 >
编程相关推荐