我对黄瓜框架的担忧很少:- 1.我只有一个Feature文件(步骤相互依赖),我想按顺序运行所有方案,默认情况下它们以随机顺序运行。 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);
}
}
因此,在上述步骤中,我从一个步骤获取令牌,并在另一步骤中尝试打印令牌,但是我得到的是null而不是实际值,因为我的步骤在随机运行 请注意,我正在通过testng.xml文件运行TestRunner。
答案 0 :(得分:1)
通常,黄瓜和测试工具被设计为完全独立地运行每个测试/方案。将场景链接在一起是一个糟糕的反模式,不要这么做。
相反,要学习正确编写方案。场景和功能文件中应该根本没有编程。需要将编程推入到步骤定义中。
在任何情况下,如果您真的愿意,可以分3个步骤编写多么复杂的代码。您的Given
可以设置任何状态。您的When
处理您的工作,而您的Then
可以检查任何数量的条件。
您可以通过将所有详细信息从场景中移出并进入步骤定义来完成此操作。通过使步骤定义调用完成所有工作的辅助方法,可以进一步改善这一点。