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

时间:2014-03-11 12:41:52

标签: jmeter

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

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。

3 个答案:

答案 0 :(得分:2)

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

也许你可以在这里打开一个bugzilla请求:

请注意,变量替换在选中Regex Matching(HTTP(S)测试脚本记录器组件)时效果更好,因为它会更加智能化。

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

答案 1 :(得分:1)

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

如果您想要对录制的测试进行参数化,最好选择

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

答案 2 :(得分:1)

我能够通过向我的工作台添加用户定义变量(UDV)元素来解决此问题。

enter image description here

它定义了:

THE_HTTP_PROTOCOL    someStringThatShouldNeverBeMatched
USER_COUNT           someStringThatShouldNeverBeMatched

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

另一个选择是使用用户定义变量将整个变量集合拆分为更小的组。然后,您可以在需要录制时禁用某些较小的分组。例如,您可以将USER_COUNT放入“控制流”UDV中,然后在录制时将其禁用,如下所示。

enter image description here