jmeter使用java脚本实现获取随机数

本文详细介绍了如何在JMeter测试计划中设置用户自定义变量,并利用JSR223取样器生成五个不重复的随机数。通过循环控制器递归调用函数,确保每个数字的唯一性,并将这些变量应用于后续的请求中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、测试计划下添加用户自定义变量,定义var1~var5字段

2、线程组下添加循环控制器

3、循环控制器下,添加JSR223取样器

4、录入以下脚本

import java.util.Random;

// 生成随机不重复的五位数字
def generateRandomNumber() {
    def random = new Random();
    def number = random.nextInt(90000) + 10000;

    // 检查生成的数字是否已经存在
    if (!vars.get("VAR1").contains(number.toString()) &&
        !vars.get("VAR2").contains(number.toString()) &&
        !vars.get("VAR3").contains(number.toString()) &&
        !vars.get("VAR4").contains(number.toString()) &&
        !vars.get("VAR5").contains(number.toString())) {
        return number;
    } else {
        return generateRandomNumber(); // 递归调用直到生成不重复的数字
    }
}

// 生成五个随机不重复的数字
vars.put("VAR1", generateRandomNumber().toString());
vars.put("VAR2", generateRandomNumber().toString());
vars.put("VAR3", generateRandomNumber().toString());
vars.put("VAR4", generateRandomNumber().toString());
vars.put("VAR5", generateRandomNumber().toString());

5、循环控制器下添加请求,请求报文中${VAR1}进行引用

### 使用 JMeter 生成和使用随机数 #### 利用内置函数助手生成随机整数 为了使参数更加贴近真实场景,在JMeter中可以通过内置的函数助手实现这一目标。当需要生成介于特定范围内的随机整数值时,比如1至100之间的数字,可以在函数助手中选择`Random`选项并设定相应区间[^1]。 ```java // 此处展示的是通过UI界面操作而非脚本编写的方式获取如下表达式的实例 ${__Random(1,100)} ``` 该表达式可以直接嵌入到HTTP请求或其他采样器中的任何地方作为动态参数传递给服务器端处理。 #### 结合前置处理器创建唯一随机字符串 除了简单的整型数据外,有时还需要更复杂的随机序列,例如长度固定的字符组合。此时可以借助BeanShell或JSR223前置处理器完成任务。对于希望得到8位独一无二的随机码的情况,有专门为此设计好的Beanshell脚本可供采用[^2]: ```beanshell import java.util.Random; String generateUniqueID(){ String SALTCHARS = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; StringBuilder salt = new StringBuilder(); Random rnd = new Random(); while (salt.length() < 8){ int index = (int)(rnd.nextFloat()*SALTCHARS.length()); salt.append(SALTCHARS.charAt(index)); } String uniqueId=salt.toString(); vars.put("unique_id",uniqueId); return uniqueId; } generateUniqueID(); ``` 这段代码会自动生成一个由大小写字母构成的八位随机串,并将其存储在一个名为`unique_id`的变量里供后续调用。 #### 应用于SQL查询语句中的随机选取 如果是在数据库层面做性能测试,则可能涉及到从表记录里面挑选同的条目来进行读取验证等工作。这时就可以利用`${__Random}`函数配合SQL命令一起工作来达到目的。例如要从users表格内随机抽取一条记录的信息: ```sql SELECT * FROM users WHERE id=${__Random(1,10000,id)}; ``` 上述例子展示了如何让每次执行都指向一样的用户编号[id],从而模拟多样的访问模式[^3]。 #### 变量命名与重用机制 无论采取哪种方式产生的随机值都可以赋予一个易于识别的名字以便之后多次引用。就像之前提到过的品牌名称案例那样,只要在相应的函数后面加上所期望的名字即可形成映射关系。一旦定义好这些带有随机性的参数后,它们就能像普通静态常量一样被其他组件轻松调用了。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值