如何才能使失败的场景在失败时自动重新运行?
以下是我正在做的事情的一些线索:
feature/GM/TK/payment.feature:71
(指向失败的方案)但失败的方案不会自动重新运行。“TestRunner”java文件
@RunWith(Cucumber.class)
@CucumberOptions(strict = true,
features = { "src/test/resources/" }, //feature file location
glue = { "com/test/stepdefs", "com.test.cucumber.hooks" }, //hooks and stepdef location
plugin = { "json:target/cucumber-report-composite.json", "pretty", "rerun:target/rerun.txt"}
)
public class CucumberTestRunner extends AbstractTestNGCucumberTests
{
}
从rerun.txt文件重新运行的“RunFailedTest”类
@RunWith(Cucumber.class)
@CucumberOptions(
strict = false,
features = { "@target/rerun.txt" }, //rerun location
glue = { "com/test/stepdefs", "com.test.cucumber.hooks" }, //hooks and stepdef location
plugin = {"pretty", "html:target/site/cucumber-pretty", "json:target/cucumber.json"}
)
class RunFailedTest
{
}
答案 0 :(得分:0)
您可以使用gherkin with qaf来实现它,它可以为可以用于重新运行的失败方案生成testng XML配置。它还支持通过设置retry.count
属性重新运行失败的方案。
答案 1 :(得分:0)
使用黄瓜+ Maven + TestNG
首先,您不需要在问题中提到的“ @RunWith(Cucumber.class)
”,如果您使用的是TestNG,则只需要"@CucumberOptions"
。
当您开始执行测试时,所有场景失败都将按照Runner文件中提到的配置写入文件"target/rerun.txt"
。
现在,您需要再创建一个Runner文件(例如-“ FailureRunner”),并在此文件中以{-> "@target/rerun.txt"
的形式提供features = { "@target/rerun.txt" }
的路径(该路径已包含故障场景的详细信息)。
现在,您需要更新TestNG.xml文件,并包括以下“ FailureRunner”-
<class name="Class path of Your First Runner Class name" />
<class name="class path of FailureRunner Class" />
完成上述所有步骤并运行执行后,第一次执行将在"target/rerun.txt"
中写入失败方案,然后,将执行“ FailureRunner”类,它将拾取{{1 }}文件,因此将执行失败方案。
我已经以同样的方式执行了,并且运行良好,请告诉我它是否有帮助!