希望将动态数据作为jsonpath请求传递

问题描述

 @Test
public void basicAuthLogin() {
    //language=JSON
    String jsonBody = "{\n" +
            "  \"name\": \"Foo\"\n" +
            "}";

    given().auth().preemptive().basic(username,password)
            .body(jsonBody)
            .contentType(ContentType.JSON)
            .when()
            .post("http://localhost:8080/secured/hello")
            .then()
            .statusCode(200);
}

我想为名称传递动态数据,而不是“ Foo”。我该怎么办?

解决方法

您需要在此处使用DataProvider。它实际上在运行时为测试用例提供数据。在测试用例之前,之后和期间,有多种方法可以向测试用例提供动态数据。

  • 如果使用的是@RunWith(Parameterized.class),请使用JUnit,并且可以使用@Parameters

    提供数据
  • 使用@DataProvider (name = “name_of_dataprovider”)并创建数据提供者方法,以防万一,如果您正在使用TestNG,并且可以在testCase中添加属性@Test (dataProvider = "data-provider")

  • 您可以从文件中提供输入,也可以在objectMapperJackson lib的帮助下编写通用映射器,以获取数据并在运行时转换为对象并将其用作输入参数。