比较自动化脚本中两个JSON数据的更好方法

时间:2018-01-05 00:37:39

标签: testing automated-tests rest-assured jbehave

我是JBehave Rest自动化脚本的新手。下面我写了几行代码,我的要求是将每个实际的JSON字段数据与预期的数据进行比较。这里JSON中的字段数量巨大,我如何以最佳方式编写脚本来处理这种情况。

JSONObject actualjson = new JSONObject(actualJsonresponse);
JSONArray actualjsonData = actualjson.getJSONArray("outputDtlList");
JSONObject expectedjson = new JSONObject(RTRestServicesBean.getConfigurationJsonConfigValue());
JSONArray expectedjsonData = expectedjson.getJSONArray("outputDtlList");

String actual_storagetype = actualjsonData.getJSONObject(0).getString("storageType");
String expected_storagetype = expectedjsonData.getJSONObject(0).getString("storageType");

Assert.assertEquals(actual_storagetype, expected_storagetype);

String actual_locnNbr = actualjsonData.getJSONObject(0).getString("locnNbr");
String expected_locnNbr = expectedjsonData.getJSONObject(0).getString("locnNbr");

Assert.assertEquals(actual_locnNbr, expected_locnNbr);

2 个答案:

答案 0 :(得分:1)

考虑使用net.javacrumbs.json-unit:json-unit

import static net.javacrumbs.jsonunit.JsonAssert.*;

...

assertJsonEquals(expectedjson, actualjsonData);

答案 1 :(得分:0)

考虑切换到Karate,它会更好地处理完整的JSON有效负载比较

* def json = { foo: 'world', hey: 'ho', zee: [1, 2, 3] }
* remove json.hey
* match json == { foo: 'world', zee: [1, 2, 3] }