【发布时间】:2020-06-15 16:37:41
【问题描述】:
我想使用 TestNG 和 RestAssured 测试 API。要测试此 API,需要进行几次 API 调用。我的第一个 API 调用请求下一个 API 调用所需的数据。
我的代码:
我有一个数据提供者,它从 Excel 文件中提取测试信息并将其打包到 Java 对象中。
@Test(dataProvider = "test1", dataProviderClass = test1.class)
public void test1(Transfer data) {
//basic test case for consent
response =
given().
spec(spec).
body(data).
when().
post("/firstCall").
then().
assertThat().
body("accepted", equalTo("accepted")).
response();
}
现在我有第二个测试用例。此测试用例还应使用从 Excel 文件中获取一些相关信息的数据提供程序。我还必须在 test2 中使用来自 test1 答案的信息。
@Test(dataProvider = "test2", dataProviderClass = test2.class, dependsOnMethods = { "test1" })
public void test2(Transfer data2) {
//use test data of test1 in this test
}
如何在第二个 API 调用中使用第一个 API 调用的结果?或者更好地说我如何将 test1 的信息传递给 test2 的数据提供者?
【问题讨论】:
-
Imo 最好的选择是在两个测试中重复相同的操作来获取响应。
-
测试应该是独立的,我建议不要在它们之间共享任何数据。如果在 test1 之前运行 test2 会怎样?如果 test1 失败并且您没有 test2 的数据怎么办?您不希望 test2 因为 test1 而失败。
-
@Amongalen 你能解释一下原因吗?
-
我应该对每个单独的步骤进行测试吗?像这样:Test1只调用test1,Test2调用test1,test2等等?
标签: java spring dependencies testng