JMeter中Beanshell预处理器生成随机数无法替换问题求助
JMeter随机数变量未替换问题解决
你的Beanshell Preprocessor脚本存在语法错误,导致random变量未被正确初始化,所以请求中的${random}无法被替换。以下是两种解决方法:
方法1:修正Beanshell脚本
原脚本的问题在于vars.put()的第二个参数需要字符串类型,但${__Random(1,1001)}会被解析为整数,类型不匹配导致脚本执行失败。修改为以下两种写法均可:
写法一:将随机数转为字符串
vars.put("random", String.valueOf(${__Random(1,1001)}));
写法二:直接用Java Random类生成(更稳定)
import java.util.Random; Random randomGenerator = new Random(); int randomValue = randomGenerator.nextInt(1000) + 1; // 生成1到1000的随机整数 vars.put("random", String.valueOf(randomValue));
方法2:跳过Beanshell,直接在请求中使用__Random函数
如果不需要复用同一个随机数,可直接在请求体中调用__Random函数,无需额外的Preprocessor:
{ "firstName": "Jmeter", "lastName": "LoadTest", "userName": "Jmeter${__Random(1,1001)}", "password": "pass8909", "primaryEmailAddress": "Jmeter${__Random(1,1001)}@gmail.com", "address": "", "city": "", "province": "", "postalCode": "", "country": "" }
若需要确保userName和primaryEmailAddress使用同一个随机数,优先选择方法1,这样请求内的${random}会引用同一值。
内容的提问来源于stack exchange,提问作者Sarada Akurathi
相关产品推荐
相关产品推荐

