Jmeter 将变量设置为 属性 的默认值
Jmeter Set Variable as a Property's Default Value
这似乎不是我独有的情况,但我一直无法在任何地方找到答案。
我正在尝试构建可以在 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,但没有提供任何可行的解决方案。
所以对于我的主要问题,我能否使用变量作为 属性 默认值。如果是这样,我将如何实现?
我找到了解决这个问题的方法。这不是我想要的,但它现在可以工作。
我真的很想将所有内容都放在一个人们必须进行编辑的地方,但我能够通过将 ${__P(ENV,${DEV})}
添加到 HTTP 请求来让用户定义的变量工作默认 Web 服务器名称 而不是将其预定义为变量。
现在有两个配置元素可能需要通过 GUI 执行进行编辑,但我认为它应该在长期 运行.
中发挥更好的作用
是的,看来作者是对的 - 看起来嵌套变量无法在 JMeter 中从相同的变量范围求值。
我创建了一个不同的 "User Defined Variables" 集,并在其中添加了 "defaultValue" - 之后此选项有效:
${__P(myProperty, ${defaultValue})}
这似乎不是我独有的情况,但我一直无法在任何地方找到答案。
我正在尝试构建可以在 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,但没有提供任何可行的解决方案。
所以对于我的主要问题,我能否使用变量作为 属性 默认值。如果是这样,我将如何实现?
我找到了解决这个问题的方法。这不是我想要的,但它现在可以工作。
我真的很想将所有内容都放在一个人们必须进行编辑的地方,但我能够通过将 ${__P(ENV,${DEV})}
添加到 HTTP 请求来让用户定义的变量工作默认 Web 服务器名称 而不是将其预定义为变量。
现在有两个配置元素可能需要通过 GUI 执行进行编辑,但我认为它应该在长期 运行.
中发挥更好的作用是的,看来作者是对的 - 看起来嵌套变量无法在 JMeter 中从相同的变量范围求值。 我创建了一个不同的 "User Defined Variables" 集,并在其中添加了 "defaultValue" - 之后此选项有效:
${__P(myProperty, ${defaultValue})}