这是我简单的Jmeter测试计划。
用户参数如下所示:
我只是简单地调用一个端点,在Regex Extractor I的帮助下根据找到的ID读取响应体,然后调用另一个端点。 ForEach循环有助于确保所有找到的ID在路径中使用ID作为参数调用相同的端点。
我想通过ForEach循环中的另一个HTTP请求尝试实现的是读取响应,如果正文包含星期一,则递增用户参数 星期一乘以1,星期二相同,其他用户参数相同。理想情况下,在测试套件的最后,我应该得到这样的东西:
根据我的BeanShell脚本,我希望我能够遵循所有正确的路径:
import org.apache.commons.lang.StringUtils;
String response = new String(data);
int Mondays = 0;
int Tuesdays = 0;
int Wednesdays = 0;
int Thursdays = 0;
int Fridays = 0;
int Saturdays = 0;
int Sundays = 0;
if(response.contains("'DayOfWeek':'Monday'")){
Mondays++;
vars.put("Monday", Mondays.toString);
};
if(response.contains("'DayOfWeek':'Tuesday'")){
Tuesdays++;
vars.put("Tuesday", Tuesdays.toString);
};
if(response.contains("'DayOfWeek':'Wednesday'")){
Wednesdays++;
vars.put("Wednesday", Wednesdays.toString);
};
if(response.contains("'DayOfWeek':'Thursday'")){
Thursdays++;
vars.put("Thursday", Thursdays.toString);
};
if(response.contains("'DayOfWeek':'Friday'")){
Fridays++;
vars.put("Friday", Fridays.toString);
};
if(response.contains("'DayOfWeek':'Saturday'")){
Saturdays++;
vars.put("Saturday", Saturdays.toString);
};
if(response.contains("'DayOfWeek':'Sunday'")){
Sundays++;
vars.put("Sunday", Sundays.toString);
};
我的小问题是用户参数变量永远不会更新,并且总是在运行结束时等于0.我在这种情况下做错了什么?以前有人遇到过这个任务吗?
答案 0 :(得分:0)
请注意starting from JMeter version 3.1 it is recommended to use Groovy for any form of scripting要考虑迁移到JSR223 PostProcessor
考虑重复'DayOfWeek':'xxx'
模式,您似乎不需要为每个工作日创建7个分支,您可以使用Regular Expressions提取当前值并设置或获取并增加相关的JMeter变量
示例代码如下:
def day = (prev.getResponseDataAsString() =~ "'DayOfWeek':'(\\w+)'")[0].get(1)
def value = (vars.get(day) ?: '0') as int
value++
vars.put(day, value as String)
有关在JMeter测试中使用Groovy脚本的更多信息,请参阅Apache Groovy - Why and How You Should Use It文章