<p>在实现跳过状态之前,如果关键测试失败,可以使用<a href="http://robotframework.org/robotframework/2.9b2/RobotFrameworkUserGuide.html#stopping-when-first-test-case-fails" rel="nofollow noreferrer">exitonfailure</a>停止进一步的执行,然后更改输出.xml(以及测试结果.html)将这些测试显示为“<strong>不运行</strong>”(灰色),而不是“失败”(红色)。在</p>
<p>下面是一个示例(在robotframework3.1.1和python3.6上测试):</p>
<p>首先创建一个扩展抽象类<a href="https://robot-framework.readthedocs.io/en/latest/_modules/robot/result/visitor.html" rel="nofollow noreferrer">ResultVisitor</a>的新类:</p>
<pre><code>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.'
</code></pre>
<p>假设您已经创建了套件(例如使用<code>TestSuiteBuilder()</code>),那么在不创建</em>的情况下运行它报告.html以及日志.html公司名称:</p>
^{pr2}$
<p>注意,我使用了<strong>“Critical”</strong>作为关键测试的标识标记,以及<strong>exitonfailure</strong>选项。在</p>
<p>然后,再次访问输出.xml,并创建报告.html以及日志.html从中:</p>
<pre><code>revisitOutputFile = os.path.join(outputDir, outputFile)
logger.info(F"Checking skipped tests in {revisitOutputFile} due to critical failures", also_console=True)
result = ExecutionResult(revisitOutputFile)
result.visit(ResultSkippedAfterCritical())
result.save(revisitOutputFile)
reportFile = 'report.html'
logFile = 'log.html'
logger.info(F"Generating {reportFile} and {logFile}", also_console=True)
writer = ResultWriter(result)
writer.write_results(outputdir=outputDir, report=reportFile, log=logFile)
</code></pre>
<p>它应显示严重故障后的所有测试,状态为灰色=“不运行”:</p>
<p><a href="https://i.stack.imgur.com/fx85k.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/fx85k.png" alt="enter image description here"/></a></p>