Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JMeter-如果前一个测试中的正则表达式可以提取某个值,则仅运行后续测试?_Javascript_Regex_Jmeter - Fatal编程技术网

Javascript JMeter-如果前一个测试中的正则表达式可以提取某个值,则仅运行后续测试?

Javascript JMeter-如果前一个测试中的正则表达式可以提取某个值,则仅运行后续测试?,javascript,regex,jmeter,Javascript,Regex,Jmeter,我正在JMeter中运行一系列webservice测试,我想知道如果前一个测试中的正则表达式提取器由于空响应或其他原因无法提取值,是否有办法跳过测试。我知道我需要使用If控制器,但我不知道应该把什么作为条件。上一个测试中的正则表达式如下所示: Reference Name: alarmid Regular Expression: alarmStatus="raised" [^>]+ alarmId="(.+?)" 因此,如果它找不到状态为“raised”的报警Id,我希望跳过下一个测试,

我正在JMeter中运行一系列webservice测试,我想知道如果前一个测试中的正则表达式提取器由于空响应或其他原因无法提取值,是否有办法跳过测试。我知道我需要使用If控制器,但我不知道应该把什么作为条件。上一个测试中的正则表达式如下所示:

Reference Name: alarmid
Regular Expression: alarmStatus="raised" [^>]+ alarmId="(.+?)"

因此,如果它找不到状态为“raised”的报警Id,我希望跳过下一个测试,因为${alarmid}是它的参数,否则将出错为500。有什么想法吗?提前谢谢

您可以使用变量。将正则表达式的结果保存到变量中,然后在IF控制器中使用此变量

变量的语法是

${myVariable}

这可以在JMeter中的任何地方使用。在IF控制器中,请使用:

"${alarmId}"  == "raised"

您可以尝试将和与javascript条件结合使用:
${JMeterThread.last_sample_ok}(检查last sample是否成功)

模式如下:

Sampler 1 Response Assertion - to check if alarmId with alarmStatus="raised" is present in response; Regular Expression Extractor - your extractor to get alarmId; If Controller Condition = ${JMeterThread.last_sample_ok} Sampler 2 - sampler that gets as argument extracted alarmId; 取样器1 响应断言-检查响应中是否存在带有alarmStatus=“raised”的alarmId; 正则表达式提取器-获取alarmId的提取器; 中频控制器 条件=${JMeterThread.last_sample_ok} 采样器2-作为参数提取的alarmId获取的采样器; 如果未找到相应的alarmId,响应断言将采样器1的状态设置为“失败”,if控制器的条件将被评估为“错误”,采样器2将被跳过

更好的方法似乎是:

  • 设置“默认值”字段的值:
    默认值:未找到
    (如果正则表达式不匹配,将设置此值)
  • 使用alarmId变量与默认值的javascript比较作为If控制器的条件:
    “${alarmId}”=“未找到”
    -如果不等于,则执行采样器2

  • 在这种情况下,您不需要使用响应断言。

    这正是我想要的!我不知道这些默认值,但看起来它们对我的工作非常有用。谢谢!