jmeter 如何比较JSON响应?

ar7v8xwq  于 2023-06-23  发布在  其他
关注(0)|答案(3)|浏览(110)

我需要在beanshell采样器中比较json响应,并打印条件是否通过或失败。有人能帮忙吗,我们怎么比较呢?我已经有了一个JSON格式的响应,当测试执行时,我会得到另一个响应,我需要比较这两个字。

I tried using if/else but then its not working properly.

JSONObject JsonResponseinput = new JSONObject();
JsonResponseinput.toString();

print(JsonResponseinput +  " = PASS");
    f.close();

String s=JsonResponseinput.toString();

if (s == JsonResponse)
{
    f = new FileOutputStream("output/path/API_OUTPUT.csv", true);
     p = new PrintStream(f);
     this.interpreter.setOut(p);
    print(s +  " = PASS");
    f.close();
}
Else
{
    print(JsonResponseinput +  " = FAIL")

}
tf7tbtn2

tf7tbtn21#

至少有四种方法可以做到这一点:
1.使用Jackson,如:

final JSONObject obj1 = /*json*/;
final JSONObject obj2 = /*json*/;
final ObjectMapper mapper = new ObjectMapper();
final JsonNode tree1 = mapper.readTree(obj1.toString());
final JsonNode tree2 = mapper.readTree(obj2.toString());
if (tree1.equals(tree2)) {
     log.info('PASS');
}
else {
     log.info('FAIL')
}

1.使用GSON,如:

JsonParser parser = new JsonParser();
JsonElement o1 = parser.parse("{a : {a : 2}, b : 2}");
JsonElement o2 = parser.parse("{b : 2, a : {a : 2}}");
assertEquals(o1, o2);

1.使用JsonSlurper,如:

def json1 = new groovy.json.JsonSlurper().parseText("json1")
def json2 = new groovy.json.JsonSlurper().parseText("json2")

if (json1 == json2) {
    log.info('PASS')
} else {
    log.info('FAIL')
}

1.使用JSONAssert

try {
    org.skyscreamer.jsonassert.JSONAssert.assertEquals("json1", "json2", false)
    println('PASS')
}
catch (Exception ex) {
    println('FAIL')
}

更多信息:The Easiest Way To Compare REST API Responses Using JMeter
P.S.忘记Beanshell吧,从JMeter 3.1开始,你应该使用JSR223测试元素和Groovy语言来编写任何形式的脚本

c90pui9n

c90pui9n2#

您可以使用以下方法比较2个JSON响应:
1.使用JSON提取器提取两个JSON响应[提取完整响应]
1.使用JSR223 Sampler处理脚本区的代码

String response1 = vars.get("jsonOutput1");
String response2 = vars.get("jsonOutput2");

if (response1.equals(response2)) {
log.info("Responses are equal");
}
else {
    log.info("Responses are not equal");
}

ycggw6v2

ycggw6v23#

我使用DeltaXML中一个名为DeltaJSON的工具进行JSON比较,它有一个整洁的GUI和REST界面。您可以使用REST API并解析响应。

相关问题