将测试数据从一个测试用例传递到另一个

时间:2020-03-03 10:11:39

标签: java spring dependencies testng

我想使用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的数据提供者?

1 个答案:

答案 0 :(得分:1)

首先,测试应为atomic,这意味着一个测试不依赖于另一个。

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

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

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

getSomeData() -> returns data saved locally in a class if available, else generate and create data in the app

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