使用JMeter进行参数化变量$ URL

时间:2018-10-13 16:30:52

标签: http url websocket jmeter

我在JMeter中测试后端项目 我想可以同时测试localhost和url开发地址。 我想在localhost和url开发地址之间切换JMeter中的URL地址,并可以在http:// {$ url}和ws:// {$ url}之间更改$ url变量。

因此,我想设置变量$ URL并可以在websocket和http连接之间进行更改,例如,如果我想将POST发送到Web套接字或http连接,则可以选择。 而且我还希望可以在localhost和开发URL之间进行更改。

我最能在JMeter中进行设置吗? ;) 请逐步描述我。

2 个答案:

答案 0 :(得分:0)

我相信您需要将参数化实现分为两部分:

  1. 协议(httpws)。由于这两个协议是由不同的采样器处理的,因此您需要有可能基于某个变量在不同的实现之间进行切换,最简单的方法是Switch Controller,按如下方式定义测试计划:

因此,如果${protocol}变量值为http-您将执行HTTP Request个采样器,反之亦然,请根据需要查看Selection Statements in JMeter Made Easy文章以获取详细说明。

  1. URL变量-希望您一旦定义了它的值后就知道如何对其进行参数化,只需将其放入相关采样器的Path字段中即可

    JMeter parameterize HTTP REquest

关于参数化本身,取决于要在何处具有变量值,可以使用不同的方法。我个人坚持使用命令行参数,因为这是提供外部参数最CI的友好方式。

  1. User Defined Variables添加到您的测试计划中,并将其配置为

    enter image description here

  2. 使用-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
相关问题