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

我想用TestNG测试一个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的数据提供者?

首先,测试应该是原子的,这意味着一个测试不依赖于另一个测试

现在,在任何需要一些数据的测试中,您应该尝试从测试逻辑中分离数据;例如,创建一个处理数据生成的对象和一个用于设置的对象

在测试套件中,您可以为套件范围创建数据对象(在套件运行时创建并可用)或具有静态字段/方法的对象

在设置中,您可以执行创建测试数据的操作,例如:从保存的类中获取数据,或者生成新数据,并请求将其添加到应用程序中

getSomeData()->返回本地保存在类中的数据(如果可用),否则在应用程序中生成和创建数据


因此,在您的特定情况下,您可以将数据保存在类测试范围之外的类中,并在设置类中创建一个检查是否可用的方法,或者调用一个方法来创建它。

Imo最好的选择是在两个测试中重复获得响应的相同操作。测试应该是独立的,我建议不要在他们之间共享任何数据。如果在test1之前运行test2呢?如果test1失败,而您没有test2的数据,该怎么办?您不希望test2因为test1而失败。@Amongalen您能解释一下原因吗?我应该为每个步骤进行测试吗?像这样:Test1只调用Test1,Test2调用Test1,Test2等等?Np,玩得开心:)