一、用时间函数:
jmeter参数化,而且要取唯一值,可以考虑用时间函数加上其他函数一起:
1
|
{
"merchant_id"
:
"615051940310129"
,
"biz_code"
:
"1001"
,
"order_id"
:
"${__time(,)}${__counter(,)}"
,
"order_amt"
:
"100"
,
"bg_url"
:
"www.baidu.com"
,
"sign"
:
"22A356FF1010B22670417E2107DB4229"
}
|
但是如果接口的处理能力很快,这个参数还是会存在重复的id;
二、用UUID:
解决上面的问题,还可以用UUID来作为参数,UUID通常以36字节的字符串表示,示例如下:
1
|
3F2504E0-4F89-11D3-9A0C-0305E82C3301
|
订单ID多数是数字的,如果不需要“-”,可以去掉。
如下是分析在jmeter中如何使用:
1.新建一个事务;
2.新建一个BeanShell Sampler;
3.新建一个http请求;
如下图:
4.在BeanShell Sampler编写UUID的代码:
1
2
3
4
5
6
7
8
9
10
|
import
java.util.UUID;
UUID uuid1 = UUID.randomUUID();
//获取UID的值
vars.put(
"order_id"
,(uuid1.toString()).toUpperCase().replaceAll(
"-"
,
""
));
//去掉UUID的“-”,再赋值给order_id 运行获取的参数就是:3F2504E04F8911D39A0C0305E82C3301
//vars.put("order_id",(uuid1.toString()).toUpperCase());
//这个就是不用去掉UUID的“-” 运行获取到的参数就是:3F2504E0-4F89-11D3-9A0C-0305E82C3301
|
5.在http请求如下:
在BeanShell Sampler获取到UUID的参数后,可以在http请求页面,直接用: "order_id":"${order_id}" 获取。运行后,该参数值几乎不出现重复的问题。
UUID可以根据自己需要的参数,进行优化