Java 将测试数据从一个测试用例传递到另一个测试用例
我想用TestNG测试一个API,然后重新启动。要测试此API,需要几个API调用。我的第一个API调用请求下一个API调用所需的数据 我的代码: 我有一个数据提供者,它从Excel文件中提取测试信息并将其打包到Java对象中Java 将测试数据从一个测试用例传递到另一个测试用例,java,spring,dependencies,testng,Java,Spring,Dependencies,Testng,我想用TestNG测试一个API,然后重新启动。要测试此API,需要几个API调用。我的第一个API调用请求下一个API调用所需的数据 我的代码: 我有一个数据提供者,它从Excel文件中提取测试信息并将其打包到Java对象中 @Test(dataProvider = "test1", dataProviderClass = test1.class) public void test1(Transfer data) { //basic test case for co
@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的数据提供者?首先,测试应该是原子的,这意味着一个测试不依赖于另一个测试 现在,在任何需要一些数据的测试中,您应该尝试从测试逻辑中分离数据;例如,创建一个处理数据生成的对象和一个用于设置的对象 在测试套件中,您可以为套件范围创建数据对象(在套件运行时创建并可用)或具有静态字段/方法的对象 在设置中,您可以执行创建测试数据的操作,例如:从保存的类中获取数据,或者生成新数据,并请求将其添加到应用程序中
getSomeData()->返回本地保存在类中的数据(如果可用),否则在应用程序中生成和创建数据
因此,在您的特定情况下,您可以将数据保存在类测试范围之外的类中,并在设置类中创建一个检查是否可用的方法,或者调用一个方法来创建它。Imo最好的选择是在两个测试中重复获得响应的相同操作。测试应该是独立的,我建议不要在他们之间共享任何数据。如果在test1之前运行test2呢?如果test1失败,而您没有test2的数据,该怎么办?您不希望test2因为test1而失败。@Amongalen您能解释一下原因吗?我应该为每个步骤进行测试吗?像这样:Test1只调用Test1,Test2调用Test1,Test2等等?Np,玩得开心:)