将测试数据从一个测试用例传递到另一个
Pass test data from one test case to another
我想用 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 的数据提供者?
首先,测试应该是 atomic
,这意味着一个测试不依赖于另一个。
现在,在任何需要一些数据的测试中,您应该尝试将数据从测试逻辑中分离出来;例如,创建一个处理数据生成的对象和一个用于设置的对象。
在您的测试套件中,您可以为套件范围创建数据对象(在套件处于 运行 时创建并可用)或具有静态 fields/methods.
的对象
在设置中,您可以执行创建测试数据的操作,例如可以:从 class 的保存位置获取数据,否则生成新数据并请求将其添加到应用程序中。
getSomeData() -> returns data saved locally in a class if available, else generate and create data in the app
因此,在您的特定情况下,您可以将数据保存在 class 测试范围之外的 class 中,并在设置 class 中创建一个方法来检查是否可用,否则调用一种创建它的方法。
我想用 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 的数据提供者?
首先,测试应该是 atomic
,这意味着一个测试不依赖于另一个。
现在,在任何需要一些数据的测试中,您应该尝试将数据从测试逻辑中分离出来;例如,创建一个处理数据生成的对象和一个用于设置的对象。
在您的测试套件中,您可以为套件范围创建数据对象(在套件处于 运行 时创建并可用)或具有静态 fields/methods.
的对象在设置中,您可以执行创建测试数据的操作,例如可以:从 class 的保存位置获取数据,否则生成新数据并请求将其添加到应用程序中。
getSomeData() -> returns data saved locally in a class if available, else generate and create data in the app
因此,在您的特定情况下,您可以将数据保存在 class 测试范围之外的 class 中,并在设置 class 中创建一个方法来检查是否可用,否则调用一种创建它的方法。