如何控制JMeter中的变量替换?

如何控制JMeter中的变量替换?,jmeter,Jmeter,我有一些用户定义的变量: SERVER_NAME myhost.com THE_HTTP_PROTOCOL HTTP LOOP_COUNT 2 然后,我使用一个录制控制器来捕获我的浏览器操作。不幸的是,JMeter的变量替换比我希望的要多。例如,它将${LOOP\u COUNT}替换为包含“2”的网站名,例如/host${LOOP\u COUNT}/somePage。我最喜欢的过度热情的变量替换示例是我的${THE_${THE_HTTP_PROTOC

我有一些用户定义的变量:

SERVER_NAME          myhost.com
THE_HTTP_PROTOCOL    HTTP
LOOP_COUNT           2
然后,我使用一个录制控制器来捕获我的浏览器操作。不幸的是,JMeter的变量替换比我希望的要多。例如,它将
${LOOP\u COUNT}
替换为包含“2”的网站名,例如
/host${LOOP\u COUNT}/somePage
。我最喜欢的过度热情的变量替换示例是我的
${THE_${THE_HTTP_PROTOCOL}{u PROTOCOL}
头管理器

是否有可能使记录更具选择性,以确定哪些变量可用于替代?例如,在我列出的变量中,我只希望在中替换
SERVER\u NAME


我使用的是JMeter 2.11。

我不建议在录制过程中替换变量,因为这种行为可能是不稳定的

如果你想把你记录的测试参数化,最好是

  • -用于主机、协议和任何其他http相关内容
  • 和类似或的函数来检索它们

实际上,我也会将主机和协议设置为属性,因为它们可以通过命令行、Ant或Maven插件或任何其他调用JMeter的方式进行设置。此外,属性可以跨线程组共享,变量具有局部作用域

我不建议在录制过程中替换变量,因为这种行为可能是不稳定的

如果你想把你记录的测试参数化,最好是

  • -用于主机、协议和任何其他http相关内容
  • 和类似或的函数来检索它们

实际上,我也会将主机和协议设置为属性,因为它们可以通过命令行、Ant或Maven插件或任何其他调用JMeter的方式进行设置。此外,属性可以跨线程组共享,变量具有局部作用域

目前,您必须在录制期间禁用用户定义的属性

也许您可以在此处打开bugzilla请求:

请注意,使用Regex Matching checked(HTTP(S)测试脚本记录器组件)时,变量替换效果更好,因为它将更加智能


但请确保如果您使用它,您不会使用响应/请求中经常出现的值(通常是短值)。

目前,您必须在录制过程中禁用用户定义的属性

也许您可以在此处打开bugzilla请求:

请注意,使用Regex Matching checked(HTTP(S)测试脚本记录器组件)时,变量替换效果更好,因为它将更加智能


但是,如果使用它,请确保不要使用响应/请求中经常出现的值(通常是短值)。

我可以通过向我的工作台添加一个用户定义变量(UDV)元素来解决这个问题

它定义:

THE_HTTP_PROTOCOL    someStringThatShouldNeverBeMatched
USER_COUNT           someStringThatShouldNeverBeMatched
然后,当我录制时,我没有得到不需要的变量替换

另一种选择是使用用户定义的变量将单个变量集合分解为更小的组。然后,您可以在需要录制时禁用某些较小的分组。例如,您可以将
USER\u COUNT
放入“控制流”UDV,然后在录制时禁用它,如下所示


我可以通过向工作台添加一个用户定义变量(UDV)元素来解决这个问题

它定义:

THE_HTTP_PROTOCOL    someStringThatShouldNeverBeMatched
USER_COUNT           someStringThatShouldNeverBeMatched
然后,当我录制时,我没有得到不需要的变量替换

另一种选择是使用用户定义的变量将单个变量集合分解为更小的组。然后,您可以在需要录制时禁用某些较小的分组。例如,您可以将
USER\u COUNT
放入“控制流”UDV,然后在录制时禁用它,如下所示


感谢您提供Bugzilla的指针。看来bug覆盖了我的情况。谢谢你给Bugzilla的指针。看来bug掩盖了我的情况。