Jmeter将变量设置为属性的默认值

时间:2015-02-03 18:42:46

标签: variables properties jmeter

这似乎不是我独有的情况,但我无法在任何地方找到答案。

我正在尝试构建可以在GUI和命令行中执行的Jmeter脚本。命令行需要将值传递到测试用例中,但同样的测试用例也需要通过GUI执行。我最初有用于GUI和命令行的单独脚本,但是只需更改几个参数就可以重复使用相同的测试用例。

例如, GUI 测试用例的Web服务器名称设置为:

<!-- ${ENV} set in User Defined Variables -->
<stringProp name="HTTPSampler.domain">${ENV}</stringProp>

命令行测试用例使用以下参数:

<!-- Define via command line w/ -JCMDDEV -->
<stringProp name="HTTPSampler.domain">${__P(CMDENV)}</stringProp>

两者都可以达到目的,但是我希望将测试结合起来以便更容易维护,并且能够通过GUI或命令行运行它们。

我通过了一个障碍,它通过将用户定义变量$ {ENV}设置为以下来组合要使用的GUI变量以及命令行的属性:

Name    Value
-----   --------
ENV     ${__P(ENV,dev.address.com)}

我现在能够通过GUI和命令行运行相同的测试用例(使用-JENV定义新环境)

我不确定我是否过度思考这个问题,但我希望能够在属性默认值中添加一个变量,以避免错别字等,同时将其交给其他人。我尝试了一些似乎不起作用的变体:

Name    Value
-----   --------
ENV     ${__P(ENV,${__V(DEV)})}
DEV     dev.address.com

这给了我以下要求:

POST http://DEV/servlet

而不是:

POST http://dev.address.com/servlet

我也尝试过使用:

${__P(ENV,${DEV})}
${__property(ENV,,${__V(DEV)})}
${__property(ENV,,${DEV})}

我正在研究Jmeter nested variables,但它没有提供任何有效的解决方案。

所以对于我的主要问题,我可以使用变量作为属性默认值。如果是这样,我将如何实现?

2 个答案:

答案 0 :(得分:1)

我找到了解决这个问题的方法。这不是我想要的,但它现在可以正常工作。

我真的希望将所有内容保存在人们不得不进行编辑的地方,但我能够通过将${__P(ENV,${DEV})}添加到 HTTP请求默认值Web服务器名称来使用户定义变量工作而不是将其预先定义为变量。

现在有两个可能需要使用GUI执行进行编辑的配置元素,但我认为从长远来看它应该会更好。

答案 1 :(得分:0)

是的,似乎作者是对的-似乎无法在同一变量范围内的JMeter中评估嵌套变量。 我创建了一个不同的“用户定义的变量”集,并在其中添加了“ defaultValue”-之后该选项起作用:

${__P(myProperty, ${defaultValue})}