我想使用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的结果?或者更好地说我如何将信息从test1传递到test2的数据提供者?
答案 0 :(得分:1)
首先,测试应为atomic
,这意味着一个测试不依赖于另一个。
现在,在任何需要某些数据的测试中,您都应尝试从测试逻辑中分离数据。例如,创建一个处理数据生成的对象和一个用于设置的对象。
在测试套件中,您可以为套件范围(在套件运行时创建并可用)创建数据对象,也可以创建具有静态字段/方法的对象。
在设置中,您可以执行一些操作来创建测试数据,例如:从保存的类中获取数据,否则生成新数据并请求将其添加到应用程序中。
getSomeData() -> returns data saved locally in a class if available, else generate and create data in the app
因此,在您的特定情况下,您可以将数据保存在类测试范围之外的类中,并在安装类中创建一个检查是否可用的方法,否则调用方法来创建它。