如何根据jmeter中以前的响应值绕过采样器?

如何根据jmeter中以前的响应值绕过采样器?,jmeter,jmeter-plugins,Jmeter,Jmeter Plugins,我遇到了这样一种情况,在这种情况下,我需要验证前一个采样器对其中一个值的响应,如果该值为[],那么我需要触发以下请求,或者切换到另一个采样器 Flow: Check Response of Sampler for One of the attribute IF(attribute value==[]) Execute the Sampler under IF Conditions. ELSE New Sampler 样本响应: {“id”:8,“商户id”:“39”,“标题”:“衬衫XtraL

我遇到了这样一种情况,在这种情况下,我需要验证前一个采样器对其中一个值的响应,如果该值为[],那么我需要触发以下请求,或者切换到另一个采样器

Flow:
Check Response of Sampler for One of the attribute
IF(attribute value==[])
Execute the Sampler under IF Conditions.
ELSE
New Sampler
样本响应: {“id”:8,“商户id”:“39”,“标题”:“衬衫XtraLarge”,“副标题”:null,“价格”:110,“说明”:null,“图像”:“图像”拇指:[[]],“选项”:[],“可用选项”:[],“自定义选项”:[]}

我需要检查属性自定义_选项是否为空!如果为空,则执行一些操作,如果不为空,则执行其他操作

需要条件来模拟这个


帮助是有用的

JMeter中一个很好的特性是Else语句,但在此之前,您必须使用2

If控制器允许用户控制其下的测试元素(其子元素)是否运行

假设您使用regex/json/css/other后处理器提取器保存属性值,并添加两个条件,第一个条件为正,下面是采样器:

${__groovy("${attributeValue}" == "[]")}
第二个是负片,在它下面添加新的取样器

${__groovy("${attributeValue}" != "[]")}
鼓励使用默认Javascript

检查此项并在条件下使用_jexl3或_groovy函数可提高性能


JMeter中一个很好的特性是Else语句,但在此之前,您必须使用2

If控制器允许用户控制其下的测试元素(其子元素)是否运行

假设您使用regex/json/css/other后处理器提取器保存属性值,并添加两个条件,第一个条件为正,下面是采样器:

${__groovy("${attributeValue}" == "[]")}
第二个是负片,在它下面添加新的取样器

${__groovy("${attributeValue}" != "[]")}
鼓励使用默认Javascript

检查此项并在条件下使用_jexl3或_groovy函数可提高性能

追求

  • 添加为返回JSON的请求的子级
  • 将以下代码放入“脚本”区域:

  • 添加到测试计划中,并使用
    ${size}
    作为“开关值”

  • 添加为交换机控制器的子级,并为其指定
    空的
    名称。将与空“自定义_选项”相关的请求放在该
    empty
    Simple Controller下
  • 添加另一个简单控制器作为交换机控制器的子控制器,并为其指定
    notempty
    名称。将与非空“自定义选项”相关的请求放在该
    notempty
    简单控制器下

  • 更多信息:

    选择

  • 添加为返回JSON的请求的子级
  • 将以下代码放入“脚本”区域:

  • 添加到测试计划中,并使用
    ${size}
    作为“开关值”

  • 添加为交换机控制器的子级,并为其指定
    空的
    名称。将与空“自定义_选项”相关的请求放在该
    empty
    Simple Controller下
  • 添加另一个简单控制器作为交换机控制器的子控制器,并为其指定
    notempty
    名称。将与非空“自定义选项”相关的请求放在该
    notempty
    简单控制器下


  • 更多信息:

    更新了我的查询。如果是正则表达式,它应该可以工作,不管怎样,您可以将默认值设置为
    []
    ,它也应该可以工作。如果不是,请指定如何定义提取器更新了我的查询。如果它是正则表达式,那么它应该可以工作,不管怎样,您可以将默认值
    []
    ,它也应该可以工作。如果没有,请指定如何定义ExtractorTanks Dmitri。但是,我得到的自定义_选项值为“自定义_选项”:[]。我们怎样才能得到那个恩皮?请提示我已经从Json响应中提取了一个键的值。它有两个可能的值,即Key=[]或Key=[{“组合”:[{“代码”:“大小”,“值”:“小”}]},{“组合”:[{“代码”:“大小”,“值”:“中”}]}]。我需要检查键是[]还是有一些值。请您帮助我下面的实现有什么问题:如果(“${Key}”=“[]”){vars.put('size','empty')}或者{vars.put('size','notempty')}我的交换机控制器没有根据上面的实现导航到其他部分。帮助是有用的!只需修改Groovy脚本的第一行并将
    custom_options
    更改为
    Key
    No,我得到的响应如下:{“id”:27,“merchant_id”:“39”,“title”:“Shorts”,“subtitle”:null,“price”:100,“description”:null,“images”:[],“image_thumbs”:[],“options”:[{“code”:“size”,“label”:“size”,“extra_info”:“values”:[{“label”:“小”、“值”:“4”}、{“标签”:“中”、“值”:“5”}]、“可用选项”:[{“组合”:[{“代码”:“大小”、“值”:“小”}]}、{“组合”:[{“代码”:“大小”、“值”:“中”}]、“自定义选项”:[]}。每当它是[]或它有一些值时,我都必须寻找可用值的选项。基于此,我需要使用那个开关控制器。根据上面的回答,这一行变为无效的def size=com.jayway.jsonpath.jsonpath.read(prev.getResponseDataAsString(),“$…custom_options”)[0].size(),因为它正在查询特定的值。谢谢Dmitri。但是,我得到的自定义_选项值为“自定义_选项”:[]。我们怎样才能得到那个恩皮?请提示我已经从Json响应中提取了一个键的值。它有两个可能的值,即Key=[]或Key=[{“组合”:[{“代码”:“大小”,“值”:“小”}]},{“组合”:[{“代码”:“大小”,“值”:“中”}]}]。我需要检查键是[]还是有一些值。请您帮助我下面的实现有什么问题:如果(“${Key}”=“[]”){vars.put('size','empty')}或者{vars.put('size','notempty')}我的交换机控制器没有根据上面的实现导航到其他部分。帮助是有用的!只需修改Groovy脚本的第一行并将
    custom\u options
    更改为
    Key
    No,我得到的响应如下:{“id”:27,“merchant\u id”