我的jmeter测试有问题。
我正在使用Blazemeter Taurus(bzt命令)来运行它,我将它作为Jenkins工作运行。 我的问题是: 我创建了用户定义的值,我将其设置为Jmeter属性,因此我可以从命令行传递它们的参数: example for a property I set
当我传递一个数字时会出现问题: bzt -o modules.jmeter.properties.profileId = 413 -o modules.jmeter.properties.lab = 8050
这些被解析为8050.0和413.0 因为“lab”参数嵌入在url中,所以它会破坏url。
使用jmeter命令通过命令行运行时,这样可以正常工作。
我尝试使用bean shell采样器来解决这个问题:
int a = Integer.parseInt(vars.get(${lab}));
String raw = String.ValueOf(a);
String processed = raw.substring(0,5);
vars.putObject("lab" ,new String(processed));
props.put("lab", lab);
log.info("this is the new " + ${lab});
但这失败了。 任何帮助将不胜感激。
答案 0 :(得分:1)
关于Beanshell解决方法 - 您的代码不正确,您需要按如下方式修改它:
int lab = (int)Double.parseDouble(props.get("lab"));
int profileId = (int)Double.parseDouble(props.get("profileId"));
props.put("lab", String.valueOf(lab));
props.put("profileId", String.valueOf("profileId"));
log.info("lab=" + lab);
log.info("profileId=" + profileId);
通过-o modules.jmeter.properties
传递的内容应通过props
简写访问,而不是vars
演示:
有关在JMeter测试中使用Beanshell测试元素中的JMeter和Java API的更多信息,请参阅How to Use BeanShell: JMeter's Favorite Built-in Component指南。