我有两个get api,它返回由id号和title组成的响应代码。
API_1的样本响应为:(有100个id's)
{
"result": "OK",
"obj" : {
"list" : [
{
"id" : 924946341,
"title" : "qweryuy"
},
{
"id" : 8361,
"title" : "kgsklp"
}
]
}
}
API-2也有类似的响应。
我想比较api的id号,并打印缺少的元素。
因此,我使用了json提取器,提取了2个API的Id。API-1的变量名为id。
API-2提取变量名为c_Id。
在第一个API的json提取器中,我提取了如下内容:
变量名称:id
json路径:$..id
比赛编号:-1
选中“所有后缀”框。
类似地,对于api2,我也使用了相同的变量名作为c_id
我使用beanshell断言来比较它们是否相同,但是无法获得如何显示缺失的值,所以我建议使用JSR223断言,我使用了给出的代码,代码如下:
log.info('id1: '+vars.get('id_ALL'))
log.info('id2: '+vars.get('c_id_ALL'))
def id1 = org.apache.commons.lang.StringUtils.substringBetween(vars.get('id_ALL'), '{', '}').split(',').collect()
def id2 = org.apache.commons.lang.StringUtils.substringBetween(vars.get('c_id_ALL'), '{', '}').split(',').collect()
def missing = org.apache.commons.collections.CollectionUtils.disjunction(id1, id2)
log.info('Missing values: ' +missing)
当我在视图结果树中运行脚本时,我收到一条断言失败消息:
javax.script.ScriptException: groovy.lang.MissingPropertyException:没有这样的属性: org : Script10
当我在面板中看到
编号:924946341 8361
c_id: 924946341092728361
然后,我得到的不是缺少的值,而是这个错误:
ERROR o.a.j.a.JSR223Assertion: JSR223脚本中的问题: JSR223断言javax.script.ScriptException: groovy.lang.MissingPropertyException: org用于类: Script10 at o.a.j.a.JSR223Assertion~groovy- for 223-3.0.7.jar:3.0.7 at org.codehaus.groovy.jsr223.GroovyCompiledScript.eval(GroovyCompiledScript.java:71) ~groovy-for 223-3.0.7.jar:3.0.7 at javax.script.CompiledScript.eval(未知来源) org.apache.jmeter.util.JSR223TestElement.processFileOrScript(JSR223TestElement.java:217),~?:1.8.0_321,~ApacheJMeter_core.jar:5.4.3 at org.apache.jmeter.assertions.JSR223Assertion.getResult(JSR223Assertion.java:50) ApacheJMeter_components.jar:5.4.3 at org.apache.jmeter.threads.JMeterThread.processAssertion(JMeterThread.java:931) ApacheJMeter_core.jar:5.4.3
我尝试使用beanshell断言来查看id和c_id值是否正在拾取,提取的变量值将被很好地提取出来。
我做错什么了吗?或者,您是否可以建议以其他方式在JMeter中实现这些缺失元素的显示?我无法检查100的身份证,当他们是混乱的形式。
发布于 2022-05-16 06:15:52
{
和}
字符是没有意义的,因为它们不存在。演示:
https://stackoverflow.com/questions/72249431
复制相似问题