在JMeter中,我正在执行get请求以检查activeMQ队列大小。
此请求是在循环控制器内进行的,运行时可以说4次。
在每次迭代中,我将outQueueCount
的值提取到JMeter变量中。
如何进行断言以验证当前计数值是否大于上一次迭代?
答案 0 :(得分:2)
如果您有2个带数字的JMeter变量,您可以使用__intSum函数检查它们之间的差异
${__intSum(${outQueueCount},-${currentCount},difference)}
difference
将是一个带有结果的新JMeter变量,然后您可以检查差异是否为1,例如:
${__jexl3("${difference}" == "1")}
答案 1 :(得分:1)
1)使用以下配置在您的请求之前添加Counter作为您的循环控制器的子项:
开始: 1
增量: 1
参考名称:计数器
2)在正则表达式提取器之后添加BeanShell PostProcessor作为请求的子项,并在脚本区域中添加以下脚本:
String Counter = vars.get("Counter");
vars.put("MyVar_" + Counter, vars.get("MyVar"));// MyVar is the name of your regular expression extractor.
3)在上面的BeanShell PostProcessor之后添加一个BeanShell Assertion,并在脚本区域中添加以下脚本:
int Counter = Integer.parseInt(vars.get("Counter"));
if(Counter > 1){
int Prev = Counter - 1;
int CurrentCount = Integer.parseInt(vars.get("MyVar_" + Counter));
int PrevCount = Integer.parseInt(vars.get("MyVar_" + Prev));
if(CurrentCount < PrevCount){
Failure = true;
FailureMessage = "CurrentCount = " + CurrentCount + " is less than " + "PrevCount = " + PrevCount;}}
答案 2 :(得分:1)
outQueueCount
将以下代码放入&#34;脚本&#34;面积:
def previousValue = vars.get('previousValue')
if (previousValue == null) {
vars.put('previousValue', vars.get('outQueueCount'))
}
else {
long previous = previousValue as long
long current = vars.get('outQueueCount') as long
if (previous >= current) {
AssertionResult.setFailure(true)
AssertionResult.setFailureMessage('Queue size not incremented: previous value: ' + previous + ', current value: ' + current)
}
}
如果之前的值大于或等于新值 - 您将收到错误消息并且采样器将失败: