Jmeter参数化实现永久递增

时间:2024-03-23 15:23:09

介绍一下Jmeter永久递增的方法。相比Jmeter的函数_counter简直完美到哭


一、  本机安装mysql数据库,或者直接用测试环境的测试库

二、 创建自动化数据库

    CREATE DATABASE autotest;

三、 创建自增序列

第一步:创建--Sequence 管理表

DROPTABLEIF EXISTSsequence;

CREATETABLEsequence(

     nameVARCHAR(50) NOTNULL,

     current_valueINTNOTNULL,

     incrementINTNOTNULLDEFAULT1,

     PRIMARYKEY(name)

) ENGINE=InnoDB;

第二步:创建--取当前值的函数

DROPFUNCTIONIFEXISTS currval;

DELIMITER $

CREATEFUNCTIONcurrval(seq_name VARCHAR(50))

     RETURNSINTEGER

     LANGUAGESQL

     DETERMINISTIC

     CONTAINSSQL

     SQLSECURITY DEFINER

     COMMENT ''

BEGIN

     DECLAREvalue INTEGER;

     SETvalue = 0;

     SELECTcurrent_value INTOvalue

          FROMsequence

          WHEREname=seq_name;

     RETURNvalue;

END

$

DELIMITER ;

第三步:创建--取下一个值的函数

DROPFUNCTIONIFEXISTS nextval;

DELIMITER $

CREATEFUNCTIONnextval(seq_name VARCHAR(50))

     RETURNSINTEGER

     LANGUAGESQL

     DETERMINISTIC

     CONTAINSSQL

     SQLSECURITY DEFINER

     COMMENT ''

BEGIN

     UPDATEsequence

          SETcurrent_value = current_value + increment

          WHEREname=seq_name;

     RETURNcurrval(seq_name);

END

$

DELIMITER ;

第四步:创建--更新当前值的函数

DROPFUNCTIONIFEXISTS setval;

DELIMITER $

CREATEFUNCTIONsetval(seq_name VARCHAR(50), value INTEGER)

     RETURNSINTEGER

     LANGUAGESQL

     DETERMINISTIC

     CONTAINSSQL

     SQLSECURITY DEFINER

     COMMENT ''

BEGIN

     UPDATEsequence

          SETcurrent_value = value

          WHEREname=seq_name;

     RETURNcurrval(seq_name);

END

$

DELIMITER ;

第五步:测试函数功能

1.   INSERTINTO sequence VALUES (innerSeq, 0, 1);----添加一个sequence名称和初始值,以及自增幅度

2.   SELECTSETVAL(innerSeq, 10);---设置指定sequence的初始值

3.   SELECTCURRVAL(innerSeq);--查询指定sequence的当前值

4.   SELECTNEXTVAL(innerSeq);--查询指定sequence的下一个值

(1)  本机安装mysql数据库,或者直接用测试环境的测试库

(2)  创建自动化数据库

CREATE DATABASE autotest1;

(3)  创建自增序列

第一步:创建--Sequence 管理表

DROPTABLEIF EXISTSsequence;

CREATETABLEsequence(

     nameVARCHAR(50) NOTNULL,

     current_valueINTNOTNULL,

     incrementINTNOTNULLDEFAULT1,

     PRIMARYKEY(name)

) ENGINE=InnoDB;

第二步:创建--取当前值的函数

DROPFUNCTIONIFEXISTS currval;

DELIMITER $

CREATEFUNCTIONcurrval(seq_name VARCHAR(50))

     RETURNSINTEGER

     LANGUAGESQL

     DETERMINISTIC

     CONTAINSSQL

     SQLSECURITY DEFINER

     COMMENT ''

BEGIN

     DECLAREvalue INTEGER;

     SETvalue = 0;

     SELECTcurrent_value INTOvalue

          FROMsequence

          WHEREname=seq_name;

     RETURNvalue;

END

$

DELIMITER ;

第三步:创建--取下一个值的函数

DROPFUNCTIONIFEXISTS nextval;

DELIMITER $

CREATEFUNCTIONnextval(seq_name VARCHAR(50))

     RETURNSINTEGER

     LANGUAGESQL

     DETERMINISTIC

     CONTAINSSQL

     SQLSECURITY DEFINER

     COMMENT ''

BEGIN

     UPDATEsequence

          SETcurrent_value = current_value + increment

          WHEREname=seq_name;

     RETURNcurrval(seq_name);

END

$

DELIMITER ;

第四步:创建--更新当前值的函数

DROPFUNCTIONIFEXISTS setval;

DELIMITER $

CREATEFUNCTIONsetval(seq_name VARCHAR(50), value INTEGER)

     RETURNSINTEGER

     LANGUAGESQL

     DETERMINISTIC

     CONTAINSSQL

     SQLSECURITY DEFINER

     COMMENT ''

BEGIN

     UPDATEsequence

          SETcurrent_value = value

          WHEREname=seq_name;

     RETURNcurrval(seq_name);

END

$

DELIMITER ;

第五步:测试函数功能

1.   INSERTINTO sequence VALUES ('innerSeq', 0, 1);----添加一个sequence名称和初始值,以及自增幅度

2.   SELECTSETVAL('innerSeq', 10);---设置指定sequence的初始值

3.   SELECTCURRVAL('innerSeq');--查询指定sequence的当前值

4.   SELECTNEXTVAL('innerSeq');--查询指定sequence的下一个值


(1)  Jmeter引用

第一步:添加JDBCConnection Configuration原件,配置信息如下

Jmeter参数化实现永久递增

第二步:自定义变量

Jmeter参数化实现永久递增

第三步:添加JDBCRequest

Jmeter参数化实现永久递增

第四步:创建JDBC后置处理器BeanShell PostProcessor

BeanShell脚本

innerNmuTemp=vars.getObject("innum").get(0).get("num");
String innerName="autoIn"+innerNmuTemp;
System.out.println(innerName);
vars.put("innername",innerName);

Jmeter参数化实现永久递增

第五步:引用

Jmeter参数化实现永久递增

酱紫~就可以完美实现永久递增啦~