当前位置: 首页 > 知识库问答 >
问题:

JMeter-JSON数组:如何使用Json路径提取器检查每个值是否包含字符串

陆宏壮
2023-03-14

这是我回应的一部分:

    {"message":"SUCCESS",
"response_list":
[

{  
"event":  
{  
"id":"123456",  
"title":"Sie7e",  
"venue_name":"New York, New York, United States",  
"city_name":"New York",  
"country_name":"United States",  
"link":"http://newyorkcity.eventful.com/venues/new-york-new-york-united-states-/123456?utm_source=apis&utm_medium=apim&utm_campaign=apic",  
"geo_lat":40.7127837,  
"geo_lng":-74.0059413,  
"time":1430715600000},

我有10个事件,每个事件下我都有venue_name,我需要检查是否所有这些事件都包含“纽约”(这是根据地点结果进行搜索)

在Json路径提取器中,我的参数是:
目标变量名:venue_name
JSONPath表达式:$...venue_name
默认值:NOT_FOUND

venue_name = vars.get("venue_name");

for (int i=0 ; i<10 ; i++) {

if (!venue_name[i].contains("New York")) {

    Failure = true;
    FailureMessage = "YOU FAILED !!!!! venue name is = " + venue_name[i];

 }
} 

我应该如何更正我的BeanShell代码?

共有1个答案

幸阳波
2023-03-14

我建议稍微更新一下您的Beanshell代码,因为JSON路径提取器不公开匹配计数。如果添加调试采样器,您将看到“venue_name_”变量如下所示:

venue_name_1=New York, New York, United States
venue_name_2=New York, New York, United States 
etc.

因此,您需要遍历所有变量,找到以“venue_name”开头的变量,并检查它们的值。参考下面的Beanshell代码(将它添加到Beanshell断言中,并确保它位于JSON路径提取器下面

Iterator iterator = vars.getIterator();
while (iterator.hasNext()) {
    Map.Entry entry = (Map.Entry) iterator.next();
    if (entry.getKey().toString().startsWith("venue_name")) {
        String value = entry.getValue().toString();
        if (!value.contains("New York")) {
            Failure = true;
            FailureMessage = "venue_name value was: " + value;
         }
    }
}

有关在JMeter中使用Beanshell的更多信息,请参见如何使用Beanshell:JMeter最喜欢的内置组件指南。

 类似资料:
  • 问题内容: 我有一张桌子来存储有关我的兔子的信息。看起来像这样: 我该如何找到喜欢胡萝卜的兔子?我想出了这个: 我不喜欢那个查询。一团糟。 作为专职兔子管理员,我没有时间更改数据库架构。我只想适当地喂兔子。有没有更可读的方法来执行该查询? 问题答案: 从PostgreSQL 9.4开始,您可以使用operator: 如果改用 jsonb 类型,甚至可以在键上为查询建立索引: __ 当然,作为专职兔

  • Json响应: 是否有任何方法可以使用hamcrest matcher的放心断言断言“id”除了“myId”之外没有任何其他值? 其他示例断言:response。然后()。assertThat()。主体(“结果”,hasSize(大于(0)); 目前,我正在通过从响应创建一个集合,并使用testNG断言断言它的大小为1,但我希望通过restAssured断言和hamcrest matcher实现同

  • 问题内容: 我正在尝试检测字符串是否包含至少一个存储在数组中的URL。 这是我的数组: 该字符串由用户输入并通过PHP提交。在确认页面上,我想检查输入的URL是否在数组中。 我尝试了以下方法: 无论输入什么,返回值始终为“找不到匹配项”。 这是正确的做事方式吗? 问题答案: 尝试这个。 如果要检查不区分大小写,请使用stristr()或stripos()。

  • 问题内容: 我需要检查字符串是否包含数字。任何数字。字符串是否为数字,而不是数字,但包含一个数字。 例子: ‘test’=没有数字。 ‘test2’=包含数字。 问题答案: 使用正则表达式: 不使用正则表达式:

  • 我想知道,我“正在寻找在我的片段中添加更新按钮,当用户单击时会检查更新是否可用。 我“正在寻找如何从url访问json文件并检查json值是否包含新值的解决方案。如果键与已经指定的值匹配,则显示消息您的数据已更新,如果不匹配,则显示无可用更新。 例如,如果下面是json文件 如果它包含除1之外的其他内容,则显示带有可用更新的toast消息。