遍历 jmeter Json 路径中的数组值并断言每个值
loop through array values in jmeter Json path and assert each value
我从 Json 路径表达式
过滤了 JSON 响应
[40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,45,45,45,45,45,42,45,42,45,42,41,40,35,37,35,45,42,41,40,35,37,35,45,42,41,40,35,37,35,45]
我需要写一些断言,基本上断言这些值在一个范围内,例如:30 到 60 之间。
我没有得到任何关于如何在 jmeter 中断言这一点的指示。
JMeter 不提供适当的测试元素,因此您将不得不编写一些脚本。
以下代码假定 JMeter 版本等于或高于 3.0。对于早期的 JMeter 版本,您必须输入 Json-smart libraries somewhere in JMeter Classpath
- 在JSON路径后处理器
之后添加Beanshell Assertion
将以下代码放入Beanshell断言"Script"区
import net.minidev.json.JSONArray;
import net.minidev.json.parser.JSONParser;
import org.apache.commons.lang.math.IntRange;
String source = vars.get("yourVar");
IntRange range = new IntRange(30, 60);
JSONParser parser = new JSONParser(JSONParser.MODE_JSON_SIMPLE);
JSONArray array = (JSONArray) parser.parse(source);
for (int i = 0; i < array.size(); i++) {
int value = (int) array.get(i);
if (!range.containsInteger(value)) {
Failure = true;
FailureMessage = "Detected value: " + value + " is not in the expected range";
}
}
如果发现超出给定范围的值,Beanshell 断言将使父采样器失败
有关使用脚本增强 JMeter 测试的更多信息,请参阅 How to Use BeanShell: JMeter's Favorite Built-in Component 文章。
我从 Json 路径表达式
过滤了 JSON 响应[40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,45,45,45,45,45,42,45,42,45,42,41,40,35,37,35,45,42,41,40,35,37,35,45,42,41,40,35,37,35,45]
我需要写一些断言,基本上断言这些值在一个范围内,例如:30 到 60 之间。 我没有得到任何关于如何在 jmeter 中断言这一点的指示。
JMeter 不提供适当的测试元素,因此您将不得不编写一些脚本。
以下代码假定 JMeter 版本等于或高于 3.0。对于早期的 JMeter 版本,您必须输入 Json-smart libraries somewhere in JMeter Classpath
- 在JSON路径后处理器 之后添加Beanshell Assertion
将以下代码放入Beanshell断言"Script"区
import net.minidev.json.JSONArray; import net.minidev.json.parser.JSONParser; import org.apache.commons.lang.math.IntRange; String source = vars.get("yourVar"); IntRange range = new IntRange(30, 60); JSONParser parser = new JSONParser(JSONParser.MODE_JSON_SIMPLE); JSONArray array = (JSONArray) parser.parse(source); for (int i = 0; i < array.size(); i++) { int value = (int) array.get(i); if (!range.containsInteger(value)) { Failure = true; FailureMessage = "Detected value: " + value + " is not in the expected range"; } }
如果发现超出给定范围的值,Beanshell 断言将使父采样器失败
有关使用脚本增强 JMeter 测试的更多信息,请参阅 How to Use BeanShell: JMeter's Favorite Built-in Component 文章。