Jmeter中控制某一段脚本失败后重复执行,并在每个HTTP Request名字中加上循环次数
==================================================
1.While Controller之前有一个BeanShell Sampler,用于Init Note Parameters
vars.put("INCREMENT", "0");
vars.putObject("ANYSAMPLEFAIL", false);
vars.putObject("ISCONTINUE", true);
vars.putObject("MAXLOOP", 5);
==================================================
2.While Controller内则是这样的
==================================================
2.1首先是需要在失败之后重复执行的一些步骤,每个HTTP request名称后面都可以加上一个“_${INCREMENT}”,这样就可以标识出循环到了第几次;
==================================================
2.2接着是一个BeanShell Assertion,用于判断取样器的结果(Judge Sample Result)
import org.apache.jmeter.util.JMeterUtils;
import org.apache.jmeter.samplers.SampleResult;
import org.apache.jmeter.assertions.AssertionResult;
SampleResult prev_result=ctx.getPreviousResult();
var increment = vars.get("INCREMENT");
Integer maxloop = (Integer)vars.getObject("MAXLOOP");
if (prev_result != null && !prev_result.isSuccessful())
{
vars.putObject("ANYSAMPLEFAIL", true);
if (Integer.parseInt(increment)< (maxloop.intValue() - 1))
{
prev_result.setSuccessful(true);
}
}
==================================================
2.3最后是一个BeanShell Sampler用于控制循环次数(Control Loop Count)
import org.apache.jmeter.util.JMeterUtils;
var increment = vars.get("INCREMENT");
Integer tempIncrement=Integer.parseInt(increment);
tempIncrement++;
Boolean requestResult = (Boolean)vars.getObject("ANYSAMPLEFAIL");
Integer maxloop = (Integer)vars.getObject("MAXLOOP");
boolean iscontinue = (tempIncrement < maxloop) && requestResult.booleanValue() ;
vars.putObject("ISCONTINUE", iscontinue);
vars.putObject("ANYSAMPLEFAIL", false);
vars.put("INCREMENT",tempIncrement.toString());
==================================================
备注:
只有以vars.put("INCREMENT", "0")的方式定义变量,才可以在HTTP request中通过${INCREMENT}直接进行引用,以vars.putObject("INCREMENT", "0")的方式定义变量就不可以。
而且,通过vars.get("INCREMENT")获取变量的值时,必须这样:var increment = vars.get("INCREMENT"),即左边的变量必须定义为var,否则就总是报错。
Jmeter中控制某一段脚本失败后重复执行,并在每个HTTP Request名字中加上循环次数的更多相关文章
- testNG实现test失败后重复执行,
test失败自动执行大大提高测试结果的准确性, 1.修改testNG源码实现test失败自动执行, 首先获取testng的源码, 获取源代码,构建过程: $ git clone git://githu ...
- Oracle 11g RAC 第二节点root.sh执行失败后再次执行root.sh
Oracle 11g RAC 第二节点root.sh执行失败后再次执行root.sh前,要先清除之前的crs配置信息 # /u01/app/11.2.0/grid/crs/install/rootcr ...
- 关于Action中ValidateXXX方法校验一次失败后\导致以后一直返回input视图的情况
问题: 使用struts2的validateXXX()进行验证,出错后自动返回之前的画面,但是Form中的数据全部丢失了,如何才能保存出错前的Form是要解决的问题. 调查: 调查后发 ...
- jmeter 通过csv data set config 设置参数化后,执行结果显示为<EOF>
通过csv data set config 设置参数化后,执行结果显示为<EOF>: 反复确认相应的参数的设置均没有问题,其中csv文件编码方式采用uft-8.在csv data set ...
- robotframework中的try exception。断言失败后,后面语句能继续执行
1.在robot中,断言有时会失败,但不想影响后面语句的执行,这时候要用到 Run Keyword And Continue On Failure
- yum update过程中失败后再次执行出现“xxxx is a duplicate with xxxx”问题
问题现象: 解决办法: 利用yum-uitls中的工具package-cleanup指令,使用方法见下图,具体可通过man package-cleanup查询 列出重复的rpm包 pac ...
- 解决Jquery中click里面包含click事件,出现重复执行的问题
出现问题的代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.o ...
- jmeter利用自身代理录制电脑脚本(一)
在利用代理录制脚本时一定要安装java jdk,不然不能录制的. 没有安装过java jdk安装jmeter后打开时会提示安装jdk,但是mac系统中直接打开提示安装jdk页面后下载的java并不是j ...
- maven下载jar包失败后无法再次重新下载
maven下载jar包失败后无法再次重新下载:删除maven 资源库中的 *.lastUpdated文件
随机推荐
- JavaScript中的闭包与匿名函数
知识内容: 1.预备知识 - 函数表达式 2.匿名函数 3.闭包 一.函数表达式 1.定义函数的两种方式 函数声明: 1 function func(arg0, arg1, arg2){ 2 // 函 ...
- 2.Triangle (三角形)
1.等腰直角三角形: https://www.cnblogs.com/FlyingLiao/p/9869040.html 2.1任意三角形: <!DOCTYPE html> <htm ...
- leetcode134
class Solution { public: inline int get_next(int idx, int size) { ? : idx+; } int aux(int idx, vecto ...
- 使用 C++11 编写类似 QT 的信号槽——上篇
了解 QT 的应该知道,QT 有一个信号槽 Singla-Slot 这样的东西.信号槽是 QT 的核心机制,用来替代函数指针,将不相关的对象绑定在一起,实现对象间的通信. 考虑为 Simple2D 添 ...
- gulp 用法 小结
前端们,gulp该用起来了,简单的demo入门 gulp.grunt前端自动化工具,只有用过才知道多么重要. 作者:一文不提来源:博客园|2015-05-28 10:35 移动端 收藏 分享 gulp ...
- JPEG和Variant的转换
unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, ...
- 显示Audio CD的音轨时间
uses MMSystem; procedure TForm1.Timer1Timer(Sender: TObject);var Trk : Word; Min : Word; Sec : ...
- ssh 免密码登录,以及 本地和远端用户名不一致 问题
ssh 远程登录 ssh -l u1 u1@192.168.0.7 ssh u1@192.168.0.7 每次远程都要输入 用户名,密码 比较麻烦.所以比较好的是免密码登录 1.安装ssh服务器 su ...
- Java学习 第二节
1.非递归求第四十个斐波那契数 package test; public class fibonacci2 { public static void main(String arg[]) { ; ; ...
- java并发:读写锁ReadWriteLock
在没有写操作的时候,两个线程同时读一个资源没有任何问题,允许多个线程同时读取共享资源. 但是如果有一个线程想去写这些共享资源,就不应该再有其它线程对该资源进行读或写. 简单来说,多个线程同时操作同一资 ...