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

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 中创建一个方法来检查是否可用,否则调用一种创建它的方法。