如何在JMeter中验证JSON响应?

时间:2013-06-25 13:12:53

标签: jmeter jmeter-plugins

无论如何要在JMeter中验证从RestFul API获得的JSON响应吗?

我得到的回应低于:

{"workingfrom":[{"id":1234,"type":"office","name":"N1"},{"id":5678,"type":"home","name":"N2"}]}

6 个答案:

答案 0 :(得分:5)

只需将groovy-all-2.3.2.jar放在JMeter安装的/ lib目录中,然后就可以使用Groovy JsonSlurper包装器了。在路径中使用.jar启动JMeter之后,您可以添加使用Groovy脚本的JSR223 Sampler。

另外,如果你安装了JMeter插件包,那么有一个JSON Path Extractor插件,对我来说效果很好。

这是使用正则表达式的两个非常好的替代方法。如果您正在编写大量测试,则这两种方法中的任何一种都会更好。

答案 1 :(得分:2)

添加响应断言并使用正则表达式验证字符串。你可以使用的正则表达式可以在Stackoverflow的其他地方找到,here来确切。请注意,这是一项非常昂贵的操作,如果您使用 n 并发线程执行此操作,可能会占用您的CPU。

答案 2 :(得分:2)

您可以使用JMeter的JSON插件。

首先安装它:

  1. Download the Plugins Manager JAR file并将其放入JMeter的lib / ext目录中。然后启动JMeter并转到"选项"菜单访问插件管理器。
  2. 在“可用插件”选项卡上,选择“JSON插件”,然后单击“应用更改”按钮并重新启动JMeter。
  3. 现在将其添加到您的测试计划(或线程组等):下拉菜单添加 - >断言 - > jp @ gc - JSON Path Assertion

    然后配置它: 假设您的数据看起来像{"version":"5.0.0","hitCount":23}

    1. JSON路径:$.hitCount
    2. 期望值(正则表达式):23
    3. 以下是有关JSON Path Assertion的更多信息。

答案 3 :(得分:2)

JSON断言是另一种方式(在JMeter 4中)。它可以轻松地断言是否存在节点。它甚至可以断言节点值(正则表达式或其他)。 enter image description here

答案 4 :(得分:0)

如果您想将值与响应值进行比较,则可以创建变量并在 JSR223断言中使用它

String code = vars.get("NumberOfUnit");
if(code >= "250" || code <="1000"){
    AssertionResult.setFailure(false);
}
else{
    AssertionResult.setFailure("Error");
    AssertionResult.setFailure(true);
}

Create a variable image - JMETER
Script - JMETER

答案 5 :(得分:0)

我有类似的json结构{"results": [{"types": [{"id":,但我尝试了$.types却没有运气。

可以在official documentation中找到正确的JSON路径和值规范:

$.results[*].types

enter image description here

根据您的情况,您可以通过以下方式声明id的值:

$.workingfrom[*].id