我有一些用户定义的变量:
SERVER_NAME myhost.com
THE_HTTP_PROTOCOL HTTP
LOOP_COUNT 2
然后,我使用录制控制器捕获我的浏览器操作。不幸的是,JMeter做的变量比我想要的更多。例如,它将${LOOP_COUNT}
替换为包含“2”的网站名称,例如/host${LOOP_COUNT}/somePage
。我最喜欢的过度变量替换示例是我的${THE_${THE_HTTP_PROTOCOL}_PROTOCOL}
标题管理器。
是否有可能使记录更具选择性,可以使用哪些变量进行替换?例如,在我列出的变量中,我真的只想替换SERVER_NAME
。
我正在使用JMeter 2.11。
答案 0 :(得分:2)
现在,您必须在录制期间禁用用户定义的属性。
也许你可以在这里打开一个bugzilla请求:
请注意,变量替换在选中Regex Matching(HTTP(S)测试脚本记录器组件)时效果更好,因为它会更加智能化。
但请确保您使用它时不要使用经常出现在响应/请求中的值(通常是短值)。
答案 1 :(得分:1)
我不建议在录制过程中替换变量,因为行为可能不稳定。
如果您想要对录制的测试进行参数化,最好选择
实际上我会将主机和协议设置为属性,因为它们可以通过命令行,通过Ant或Maven插件或任何其他调用JMeter的方式设置。除了属性可以跨线程组共享,变量具有局部范围。
答案 2 :(得分:1)
我能够通过向我的工作台添加用户定义变量(UDV)元素来解决此问题。
它定义了:
THE_HTTP_PROTOCOL someStringThatShouldNeverBeMatched
USER_COUNT someStringThatShouldNeverBeMatched
然后,当我录制时,我没有得到不需要的变量替换。
另一个选择是使用用户定义变量将整个变量集合拆分为更小的组。然后,您可以在需要录制时禁用某些较小的分组。例如,您可以将USER_COUNT
放入“控制流”UDV中,然后在录制时将其禁用,如下所示。