我需要执行一个场景 100 次,该场景是一项功能的一部分。由于没有数据参数化,因此没有场景大纲。我只需要对这个特定场景进行大猩猩测试,以确保它每次都通过,没有任何失败。我的一些团队成员多次观察到失败,因此需要验证稳定性。
Runner 类代码:
public class Baserunner extends AbstractTestNGCucumberTests{
private TestNGCucumberRunner testNGCucumberRunner;
@BeforeClass(alwaysRun = true)
public void setUpClass() throws Exception {
System.out.println("Test");
String browsername = "IExplorer";
testNGCucumberRunner = new TestNGCucumberRunner(this.getClass());
BaseConfig.ConfigFileReader();
BaseConfig.launchbrowser(browsername);
// BaseConfig.executeScript();
}
@Test(groups = "cucumber", description = "Runs Cucumber Feature", dataProvider = "features")
public void feature(CucumberFeatureWrapper cucumberFeature) {
testNGCucumberRunner.runCucumber(cucumberFeature.getCucumberFeature());
}
@DataProvider
public Object[][] features() {
return testNGCucumberRunner.provideFeatures();
}
@AfterClass(alwaysRun = true)
public void tearDownClass() throws Exception {
testNGCucumberRunner.finish();
BaseConfig.closeBrowser();
}
您可以在运行器类中使用循环逻辑尝试下面的技巧。
@Override
@Test(groups = "cucumber", description = "Runs Cucumber Feature", dataProvider = "features")
public void feature(CucumberFeatureWrapper cucumberFeature) {
for(int i=0;i<100;i++)
testNGCucumberRunner.runCucumber(cucumberFeature.getCucumberFeature());
}
另外,您必须通过指定行号来确保仅执行一种场景。
@CucumberOptions(features = {"src/test/resources/stepdef/scenarios.feature:3"})
您使用什么版本的黄瓜?
也许不是最好的答案,但它对我有用。
在MacOs终端系统上运行。
在 Playwright 框架上进行测试。
max=10
n=10
while [[ $n -lt $max ]]; do
your maven command here
((n++))
sleep 3
done
我认为你需要参数化黄瓜中的 It Scenario。这个执行每个场景的步骤很多次都有标签
Scenario Outline: My program's test
Given Im in the section HOME
When I click on button Accept <action>
Example:
| action |
| 1 |
| n |
| n |
| 100 |
另一种选择是这样的。这使用参数化 | 执行100 | 100
Scenario: My program's test
Given Im in the section HOME
When I click on button Accept 100
在步骤定义之后
@When("^I click on button Accept \"([^\"]*)\"$")
public void I_click_on_button_Accept(int n) throws Throwable {
for(int i=0; i <= n; i++) {
methodCall();
}
}