首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用JMeter打印缺少的元素?

如何使用JMeter打印缺少的元素?
EN

Stack Overflow用户
提问于 2022-05-15 14:56:14
回答 1查看 46关注 0票数 0

我有两个get api,它返回由id号和title组成的响应代码。

API_1的样本响应为:(有100个id's)

代码语言:javascript
运行
复制
{

   "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断言,我使用了给出的代码,代码如下:

代码语言:javascript
运行
复制
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的身份证,当他们是混乱的形式。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-05-16 06:15:52

  1. 我不能重现您的问题,可能是一些环境问题,取决于您的Java和您在JMeter类路径中拥有的库。
  2. 查看变量值,删除{}字符是没有意义的,因为它们不存在。
  3. 您可以尝试使用语句,而不是指定完全限定的类名,即将“您的”代码更改为以下内容: 进口org.apache.commons.collections.CollectionUtils log.info(' id1:‘+vars.get(’id_ALL‘)log.info( id2:'+vars.get('c_id_ALL')) def id1= vars.get('id_ALL').split(’id_ALL ').collect() def id2=vars.get(‘c_id_ALL’).collect(‘c_id_ALL’)id2=vars.get(‘’,‘’)id2(‘’,‘’) def (‘’)id_ALL=(#en22 20#,)(缺失值:‘’+失踪)

演示:

更多信息:在Groovy中编写JMeter断言脚本--教程

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72249431

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档