首页 文章

如何在JMeter中动态设置HTTP Referer头?

提问于
浏览
4

希望这是JMeter测试的常见问题 .

我通过JMeter将代理服务器设置为'record'在我们的开发环境中的测试用例 . 这工作正常,我设置了一些' HTTP Request Defaults ' to globally set the default '服务器名称或IP ' and '协议' .

既然已经在DEV上完成了测试,我们已经将代码移到我们的QA服务器上进行更多测试 - 我想我只需要在默认值中更改“服务器名称”然后运行测试 .

我注意到的一件事是,对于我的测试用例中的每个采样器,该特定采样器的' HTTP Header Manager '中存在其他标头 - 如User-Agent,Cache-Control等. Referer 标头是唯一关注我的标头因为它仍然是DEV服务器'hard coded' .

有没有办法动态设置它 - 这样我就可以在多个环境中运行这个记录的测试?这通常如何处理?

任何帮助表示赞赏!谢谢 .

JG

3 回答

  • 3

    只有在HTTP请求中未提供任何值时,Jmeter才会读取HTTP请求默认值 . 如果您在请求中将域留空,它将从请求中读取;否则它使用本地值 .

    作为快速修复,在文本编辑器中打开JMX文件,并用空值替换所有域的实例 . 在Jmeter中打开文件后,将域值重新添加回HTTP Request Default配置元素 .

    为避免将来出现这种情况,请在录制前填写“请求默认值” . Jmeter将自动过滤掉与默认值匹配的值 .

    您也可以使用变量和 user defined values 执行此操作 . 请注意您设置的默认值 . 例如,如果您说 customerID = 123 ,任何时候Jmeter在录制时检测到'123',它将用 ${customerID} 替换它 . 所以,如果有值'12345',Jmeter会记录 ${customerID}45

  • 0
    • 在测试计划的根目录中设置名为 server 的JMeter变量

    • 在HTTP请求中使用该变量默认为“服务器名称”字段

    • 在HTTP标头管理器引用程序字段设置中使用该变量

    如果要将其从命令行传递到非GUI JMeter运行,也可以使用JMeter属性而不是变量

  • 1

    我这样做了:

    • 创建了名为SRVNAME和SRVPORT的用户定义变量

    • 更改了jmx文件中的http referrers值,如下所示:

    <elementProp name =“Referer”elementType =“Header”>
    <stringProp name =“Header.name”> Referer </ stringProp>
    <stringProp name =“Header.value”> http:// $ :$ /SomePage.html?querystring=blah </ stringProp>
    </ elementProp>

    • 为具有覆盖的变量赋值,以便可以从命令行提供属性:

    $ {__ P(srvname,www.defaultserver.org)}
    $ {__ P(srvport,80)}

    • 在"Server Name or IP"和"Port Number"文本框中也使用了HTTP请求默认值中的变量 .

    希望这可以帮助

相关问题