【问题标题】:How to automate two JSON response comparison如何自动化两个 JSON 响应比较
【发布时间】:2019-12-21 07:51:59
【问题描述】:

我想比较两个 json 响应。我试图将 JSON 响应存储在 pojo 中,然后通过覆盖 equals 方法进行比较,但我的 pojo 非常大,包含 10 个类。有没有其他方法比较

【问题讨论】:

标签: java json api automation rest-assured


【解决方案1】:

你可以试试下面的代码 sn-p:

import org.codehaus.jettison.json.JSONObject;
import org.junit.Assert;

import io.restassured.RestAssured;
import io.restassured.builder.RequestSpecBuilder;
import io.restassured.filter.cookie.CookieFilter;
import io.restassured.response.Response;
import io.restassured.specification.RequestSpecification;

import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;

检索 JSON 响应:

Response jsonResponseOne = RestAssured.given().spec(requestSpecification).filter(cookieFilter).relaxedHTTPSValidation().when().///.then().assertThat().extract().response();

Response jsonResponseTwo = RestAssured.given().spec(requestSpecification).filter(cookieFilter).relaxedHTTPSValidation().when().///.then().assertThat().extract().response();

将两个 JSON 响应提取为字符串:

JSONObject jsonOne = new JSONObject(jsonResponseOne.getBody().asString())
JSONobject jsonTwo = new JSONObject(jsonResponseTwp.getBody().asString())

使用 Java 比较响应:

Assert.assertEquals(jsonOne, jsonTwo);

【讨论】:

    【解决方案2】:

    如果您需要它们之间的差异,请尝试使用zjsonpatch库来检测两个json响应之间的差异。

    示例代码:

    JsonNode json1= jacksonObjectMapper.readTree(jsonString1); JsonNode json2= jacksonObjectMapper.readTree(jsonString2); JsonNode patchNode = JsonDiff.asJson(json1, json2); String diffs = patchNode.toString();

    【讨论】:

      猜你喜欢
      • 2020-03-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-01
      相关资源
      最近更新 更多