1

我的 jmeter 测试有问题。

我正在使用 Blazemeter Taurus(bzt 命令)来运行它,并将它作为 Jenkins 作业运行。我的问题是:我创建了用户定义的值,我将其设置为 Jmeter 属性,因此我可以从命令行传递参数: 我设置的属性的示例

当我传递一个数字时会出现问题: bzt -o modules.jmeter.properties.profileId=413 -o modules.jmeter.properties.lab=8050

这些被解析为 8050.0 和 413.0 因为“实验室”参数嵌入在 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});

但这失败了。任何帮助,将不胜感激。

4

1 回答 1

1
  1. 关于 Taurus 问题 - 通过Taurus 支持论坛报告
  2. 关于 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

演示:

Beanshell道具操作Demo

有关在 JMeter 测试中使用 Beanshell 测试元素中的 JMeter 和 Java API 的更多信息,请参阅如何使用 BeanShell:JMeter 最喜欢的内置组件指南。

于 2016-04-29T08:20:07.100 回答