所以我正在使用JMeter 3进行一些性能测试,我刚刚被要求让它变得更有活力......
我正在使用Properties File Reader插件,并将其指向包含此类条目的文件 -
DEV_SEARCH_API_URL=example.com
QA_SEARCH_API_URL=example2.com
现在我有一个名为
的用户定义变量env | ${__P(perf.environment, qa)}
然后我正在执行构建此类网址的HTTP请求
https://${login_serverName}/${env}/authentication/login
我从另一个UDV中调用QA_SEARCH_API_URL
login_serverName | ${__P(QA_AUTHENTICATION_API_URL)}
这样可行,但我想要做的是用来自UDV $ {env}的值替换变量的QA部分(因为这将是QA或DEV),从而正确调用我的属性文件中的网址...
我试过了
${__P(${env}_AUTHENTICATION_API_URL)}
但这不起作用,也不会返回任何东西,我不相信这是不可能的,我只是做错了...
非常感谢任何帮助,谢谢。
答案 0 :(得分:4)
当您将变量放在彼此之内时,您几乎总是想要evalVar
。
有几种方法可以在JMeter中讨论变量(和属性)。
示例变量:
var
| something
< =我们将要投入其他内容的变量
something_more_stuff
| ${something_else}
< =将通过组合事物而生成的变量
something_else
| even more stuff
< =我们尝试获取的变量
示例查询:
${${var}_more_stuff}
| ${${var}_more_stuff}
${__V(${var}_more_stuff})}
| ${something_else}
${__eval(${var}_more_stuff})}
| var_more_stuff
${__evalVar(${var}_more_stuff})}
| even more stuff
正如您所看到的,放置"可变括号"在彼此内部是不起作用的。其他所有东西都略有不同,这很有趣,但不一定有用。当您将变量放在彼此内部时,您几乎总是想要evalVar
。
答案 1 :(得分:3)
可以使用__V() function。根据文件:
例如,如果其中一个变量 A1,A2 且 N = 1 :
$ {A1} - 工作正常
$ {A $ {N}} - 无效(嵌套变量引用)
$ {__ V(A $ {N})} - 工作正常。 A $ {N} 变为 A1 , __ V 函数返回值A1
如果env
是JMeter变量:
${__V(${env}_AUTHENTICATION_API_URL)}
如果env
是JMeter属性:
${__V(${__P(env,)}_AUTHENTICATION_API_URL)}
更多信息和提示:Here’s What to Do to Combine Multiple JMeter Variables
答案 2 :(得分:0)
$ {__ groovy(props.get(vars.get(“env”)+“_ AUTHENTICATION_API_URL”))}