我试图断言Json响应在我的jmetm使用Beanshell断言。下面是我的代码。
import org.json.JSONObject;
import org.json.JSONArray;
import java.lang.String;
import org.apache.log.Logger;
try{
String jsonString = prev.getResponseDataAsString();
JsonObject jsonobj = JsonObject.readFrom(jsonString);
JsonArray jsonarr = jsonobj.get("items").asArray();
String pickup = jsonarr.get(2).asObject().get("CM_NAME").asString();
log.info(pickup);
}
catch(Exception e)
{
log.info("beanshell Exception "+e.getMessage());
}
下面是我必须验证的Json路径
$.items[2].CM_NAME
运行脚本后,我得到以下脚本。
断言失败消息:org。阿帕奇。乔芬。util。JMeterException:调用bsh方法时出错:评估源文件:内联评估:``导入组织。json。JSONObject;导入组织。json。杰索纳雷;导入java。lang.String;…'':类型化变量声明:在命名空间中找不到类:JsonObject
我使用的是jmeter版本2.11
。有人能帮我让我的脚本正常工作吗?我的代码正确吗?
如果您真的想这样做,您需要确保在JMeter类路径中的某个地方有相关的JSON库(通常将jar放到JMeter的“lib”文件夹中并重新启动JMeter以获取它就足够了)
展望未来,我建议使用不同的方法,如:
>
JMeter插件提供JSON路径断言,您可以直接在那里使用JSON路径查询。您可以通过JMeter插件管理器安装JSON路径断言
切换到JSR223断言和Groovy语言。Groovy具有内置的JSON支持,因此您不需要任何额外的库。例如,如果您有以下JSON响应:
{
"items": [
{
"CM_NAME": "foo"
},
{
"CM_NAME": "bar"
},
{
"CM_NAME": "baz"
}
]
}
您需要提取baz
值,您可以使用以下Groovy代码执行此操作:
def response = SampleResult.getResponseDataAsString()
def json = new groovy.json.JsonSlurper().parseText(response)
log.info(json.items[2].CM_NAME)
我建议您改用JsonPath,这正是您想要做的。
另外,升级到JMeter 3.1,它已经将这个库嵌入到它的类路径中,或者下载JAR文件并将其放在/lib/ext中。
完整代码示例:
import com.jayway.jsonpath.JsonPath;
String author0 = JsonPath.read(document, "$.store.book[0].author");
Failure = !"John Smith".equals(author0);
if (Failure) {
FailureMessage = "Expected John Smith as author";
}
我试图在Spring MVC Web服务返回的JSON结果中验证LocalDate对象,但我不知道如何验证。 目前,我总是遇到如下断言错误: java.lang.AssertionError: JSON路径" $[0]。“开始日期”应为:是 我的测试的重要部分发布在下面。任何想法如何修复测试以通过? webservice返回一个视图对象列表,如下所示: [编辑] 另一次尝试是 导致 java.la
我收到了针对我的API的错误请求的以下响应。我将RestAssured用于我的rest响应断言。 我需要验证响应的所有属性的值。我正在努力验证此路径:。我无法为它想出GPath。 以下是我所作的断言: 由于路径不正确,断言总是失败。
我一直在验证下面的回答。 当我使用空手道发出获取请求时,我会得到以下响应,我想验证它。 我试过: 它说它不是字符串。你能帮我确认一下这个请求吗?
我有一个关于Rest保证的问题。-https://code.google.com/p/rest-assured/wiki/Usage 我知道我可以使用REST保证进行HTTP调用(. get. put等)。)并使用时()等验证响应。我想验证我已经保存在数据库中的JSON响应,而不是实时调用Web服务并验证它的响应。 我可以使用REST-保证加载JSON响应作为字符串并验证它吗?
我正在使用Swagger生成Restful API: 这个API接受json字符串并从中生成java对象。这在一个例外情况下运行良好:API接受任何正确格式的json字符串,但忽略json的内容,这意味着我得到一个使用默认值创建的对象。 所以我的问题是:在生成实际的java对象之前,如何验证传入的jsonstring(针对json模式)?
我试图验证非json格式的错误响应体。我尝试了使用模式以及使用包含匹配的关键字。这对我不起作用。 在post调用中观察到多个匹配时从API返回的实际响应: 我的空手道特点: 尝试*匹配实际的[0] == '#(^partSchema)'也从https://gist.github.com/ptrthomas/2a1e30bcb4d782279019b3d5c10b3ed1。不工作