我在JMeter中测试后端项目 我想可以同时测试localhost和url开发地址。 我想在localhost和url开发地址之间切换JMeter中的URL地址,并可以在http:// {$ url}和ws:// {$ url}之间更改$ url变量。
因此,我想设置变量$ URL并可以在websocket和http连接之间进行更改,例如,如果我想将POST发送到Web套接字或http连接,则可以选择。 而且我还希望可以在localhost和开发URL之间进行更改。
我最能在JMeter中进行设置吗? ;) 请逐步描述我。
答案 0 :(得分:0)
我相信您需要将参数化实现分为两部分:
协议(http
或ws
)。由于这两个协议是由不同的采样器处理的,因此您需要有可能基于某个变量在不同的实现之间进行切换,最简单的方法是Switch Controller,按如下方式定义测试计划:
开关控制器-开关值-> ${protocol}
http
名称为ws
的简单控制器
因此,如果${protocol}
变量值为http
-您将执行HTTP Request
个采样器,反之亦然,请根据需要查看Selection Statements in JMeter Made Easy文章以获取详细说明。
关于参数化本身,取决于要在何处具有变量值,可以使用不同的方法。我个人坚持使用命令行参数,因为这是提供外部参数最CI的友好方式。
将User Defined Variables添加到您的测试计划中,并将其配置为
使用-J command-line argument来提供值,例如:
jmeter -Jprotocol=http -JURL=example.com -n -t test.jmx -l result.jtl
答案 1 :(得分:0)
JMeter不直接接受origin参数,而是要求您将每个组件作为单独的参数提供,这有点不便。
如果您可以使用Bash和Python,则以下代码可以自动完成此过程:
function jmorigin { python3<<<"from urllib.parse import *; a=urlsplit(\"$1\"); print('-Jserver='+a.hostname+' -Jprotocol='+a.scheme+' -Jport='+str(a.port))" ; }
使用此方法,可以简化JMeter的参数设置:
ORIGIN=https://example.com:443
jmeter $(jmorigin $ORIGIN)
扩展为...
jmeter -Jserver=example.com -Jprotocol=https -Jport=443