将JSON字符串作为输入传递给带有Selenium的RESTAssured中POST请求正文的参数之一

时间:2020-06-25 19:37:30

标签: java rest-assured

我正在使用Selenium中的RESTAssured Java库进行API测试自动化。我需要将json字符串作为值传递给POST请求正文的一个参数。我的请求正文如下:

{
  "parameter1": "abc",
  "parameter2": "def",
  "parameter3": {
    "id": "",
    "key1": "test123",
    "prod1": {
      "id": "",
      "key3": "test123",
      "key4": "12334",
      "key5": "3",
      "key6": "234334"
    },
    "prod2": {
      "id": "",
      "key7": "test234",
      "key8": "1",
      "key9": true
    }
  },
  "parameter4": false,
  "parameter5": "ghi"
}

对于parameter3,我需要传递json格式的字符串值。 json文件位于我的本地系统中,并且是一个巨大的文件,因此,如果我可以将路径传递到json文件,这将是有意义的。

是否可以使用RestAssured来实现这一目标?

1 个答案:

答案 0 :(得分:1)

使用https://github.com/intuit/karate#type-conversion库;

读取json文件并获取为字符串

* json output1 = dataset

将字符串转换为JSONObject

String content = "";
try {
    content = new String(Files.readAllBytes(Paths.get("absolute_path_to_file\\example.json")));
} catch (IOException e) {
    e.printStackTrace();
}

获取需要放入JSONObject jsonObject = new JSONObject(content);

的新json对象
jsonObject

用新的String jsonString = "{\n" + " \"firstName\": \"John\",\n" + " \"lastName\" : \"doe\",\n" + " \"age\" : 26,\n" + " \"address\" : {\n" + " \"streetAddress\": \"naist street\",\n" + " \"city\" : \"Nara\",\n" + " \"postalCode\" : \"630-0192\"\n" + " }\n" + "}"; JSONObject updateObject = new JSONObject(jsonString); 替换parameter3的值

updateObject

如果要美化打印输出;

jsonObject.put("parameter3", updateObject);

System.out.println(jsonObject.toString());

如果您要更新{ "parameter5": "ghi", "parameter4": false, "parameter3": { "firstName": "John", "lastName": "doe", "address": { "streetAddress": "naist street", "city": "Nara", "postalCode": "630-0192" }, "age": 26 }, "parameter2": "def", "parameter1": "abc" } 中的嵌套prod1之类的json对象

parameter3