如何在JMeter中动态设置HTTP Referer header?
希望这是 JMeter 测试的常见问题。
我通过 JMeter 设置代理服务器来“记录”我们的开发环境中的测试用例。效果很好,我设置了一些“HTTP 请求默认值”来全局设置默认的“服务器名称或 IP”和“协议”。
现在测试已在 DEV 上完成,我们已将代码移至 QA 服务器以进行更多测试 - 我想我只需更改默认值中的“服务器名称”,然后运行测试即可。
我注意到的一件事是,对于我的测试用例中的每个采样器,其他标头都存在于该特定采样器的“HTTP 标头管理器”中,例如 User-Agent、Cache-Control 等。 Referer 标头是我唯一关心的,因为它仍然被“硬编码”为 DEV 服务器。
有没有办法动态设置它——以便我可以在多个环境中运行这个记录的测试?通常如何处理这种情况?
任何帮助表示赞赏!谢谢。
杰格
Hopefully this is a common issue with JMeter testing.
I setup a Proxy Server via JMeter to 'record' a test case in our DEVELOPMENT environment. That worked fine and I setup some 'HTTP Request Defaults' to globally set the default 'Server Name or IP' and 'Protocol'.
Now that the tests are completed on DEV, we have moved our code to our QA servers for more testing -- and I thought I would simply have to change the 'Server Name' in my defaults and then run the tests.
One thing I noticed is that for each sampler in my test case, other headers are present in the 'HTTP Header Manager' for that specific sampler -- like User-Agent, Cache-Control, etc. The Referer header is the only one that concerns me because it still is 'hard coded' to be the DEV server.
Is there a way to set this dynamically -- so that I can run this recorded test in multiple environments? How is this normally handled?
Any help is appreciated! Thanks.
jg
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
仅当 HTTP 请求中未提供值时,Jmeter 才会读取 HTTP 请求默认值。如果您在请求中将域留空,它将从请求中读取;否则它使用本地值。
作为快速修复,请在文本编辑器中打开 JMX 文件,并将域的所有实例替换为空白值。在 Jmeter 中重新打开文件后,将域值添加回 HTTP 请求默认配置元素中。
为了避免将来出现这种情况,请在记录之前填写请求默认值。 Jmeter会自动过滤掉与默认值匹配的值。
您还可以使用变量和
用户定义的值
来执行此操作。请注意您设置的默认值。例如,如果您说customerID = 123
,则只要 Jmeter 在录制时检测到“123”,它就会将其替换为${customerID}
。因此,如果存在值“12345”,Jmeter将记录${customerID}45
Jmeter will read the HTTP Request Defaults only if no value is provided in the HTTP Request. If you leave the domain blank in the request, it will read from the request; else it use the local value.
As a quick fix, open your JMX file in a text editor and replace all instance of the domain with a blank value. Once you open your file back in Jmeter, add the domain value back into your HTTP Request Default config element.
To avoid this in the future, fill out the Request Default values BEFORE recording. Jmeter will automatically filter out values that match the default.
You can also do this with variables and
user defined values
. Be careful what default values you set. For example, if you saidcustomerID = 123
, any time Jmeter detects '123' while recording, it will replace it with${customerID}
. So, if there is the value '12345', Jmeter will record${customerID}45
server
的 JMeter 变量另外,如果您愿意,也可以使用 JMeter 属性而不是变量将其从命令行传递到非 GUI JMeter 运行
server
at root of test planAlso you may use JMeter property instead of variable if you want to pass it from command line to non-GUI JMeter run
我这样做了:
创建了名为SRVNAME和SRVPORT的用户定义变量
将jmx文件中的http引用值更改为如下:
希望这有帮助
I did this:
created User Defined variables named SRVNAME and SRVPORT
changed http referrers values in jmx file to be like this:
Hope this helps