我对 cucumber 框架没什么担忧:- 1.我有一个功能文件(步骤相互依赖),我想按顺序运行所有场景,默认情况下它们按随机顺序运行。 2. 如何多次运行单个特征文件?
我放置了一些标签并尝试运行,但没有成功。
@Given("Get abc Token")
public void get_abc_Token(io.cucumber.datatable.DataTable dataTable) throws URISyntaxException {
DataTable data=dataTable.transpose();
String tkn= given()
.formParam("parm1",data.column(0).get(1))
.formParam("parm2", data.column(1).get(1))
.formParam("parm3", data.column(2).get(1))
.when()
.post(new URI(testurl)+"/abcapi")
.asString();
jp=new JsonPath(tkn);
Token=jp.getString("access_token");
if (Token==null) {
Assert.assertTrue(false,"Token is NULL");
}else {
}
}
@Given("Get above token")
public void get_abovetoken(io.cucumber.datatable.DataTable dataTable) throws URISyntaxException {
System.out.println("Token is " +Token);
}
}
因此,在上述步骤中,我从一个步骤获取 token ,并尝试在其他步骤中打印 token ,但我得到的是 null 而不是实际值,因为我的步骤是随机的 请注意,我正在通过 testng.xml 文件运行 TestRunner。
最佳答案
Cucumber 和测试工具通常旨在将每个测试/场景作为完全独立的事物运行。将场景链接在一起是一种可怕的反模式,不要这样做。
相反,要学会正确地编写场景。场景和功能文件中不应包含任何编程。编程需要下推到步骤定义中。
任何场景,无论多么复杂,只要你愿意,都可以通过 3 个步骤来编写。您的 Given
可以设置任意数量的状态。您的 When
处理您正在做的事情,您的 Then
可以检查任意数量的条件。
您可以通过将所有细节从场景中推送到步骤定义中来完成此操作。您可以通过让步骤定义调用完成所有工作的辅助方法来进一步改进这一点。
关于java - Cucumber 场景按顺序运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57273261/