JMeter动态插入服务器名称或IP

时间:2011-01-24 23:59:52

标签: jmeter

我正在尝试创建JMeter测试,并针对不同的环境使用相同的测试 - QA,Staging,Dev等。 我想通过更改CSV文件或通过ant脚本传递值或通过命令提示符手动更改IP地址。不幸的是,我无法这样做。测试不会从CSV文件或命令提示符中获取值。

有人可以帮帮我吗。

先谢谢。

5 个答案:

答案 0 :(得分:10)

我通常会在测试中添加HTTP Request Defaults元素并手动更改它。

Selecting an HTTP Request Defaults

enter image description here

否则,对于自动化,您可以使用脚本修改jmx文件。

编辑实际上,您可以使用ant过滤器在构建时动态更改它。例如,使用<filter token="SERVER" value="${server}"/>copy目标的过滤器对下面的文件进行过滤将获得一个新的jmx文件,该文件将使用正确的服务器。

 <ConfigTestElement guiclass="HttpDefaultsGui" testclass="ConfigTestElement" testname="HTTP Request Defaults" enabled="true">
          <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
            <collectionProp name="Arguments.arguments"/>
          </elementProp>
          <stringProp name="HTTPSampler.domain">@SERVER@</stringProp>
          <stringProp name="HTTPSampler.port"></stringProp>
          <stringProp name="HTTPSampler.connect_timeout"></stringProp>
          <stringProp name="HTTPSampler.response_timeout"></stringProp>
          <stringProp name="HTTPSampler.protocol"></stringProp>
          <stringProp name="HTTPSampler.contentEncoding"></stringProp>
          <stringProp name="HTTPSampler.path"></stringProp>
        </ConfigTestElement>

答案 1 :(得分:4)

在测试中,您可以使用Jmeter属性 - 然后您可以从命令行切换这些属性。

看看文档的这一部分: http://jmeter.apache.org/usermanual/test_plan.html#using_variables

此部分也很有帮助: http://jmeter.apache.org/usermanual/functions.html#__P

如果您想更改主机名,可以采用以下方法:

在命令行中定义属性值:

jmeter -Jhostname1 = www.realhost.edu

获取测试本身的值,如果没有,则提供默认值:

$ {__ P(hostname,www.dummy.org)} - 如果未定义,则返回属性hostname或www.dummy.org的值

答案 2 :(得分:1)

首先,您应该将csv文件放在保存测试脚本文件的位置。通常,测试脚本可以像jmx扩展名一样保存,并将csv文件放在它的同一目录中。

CSV文件的内容如下:

url;www.test123.com
url;www.test1234.com
url;www.test12345.com

请注意,在线程组配置中,线程计数必须是csv文件中的最小行数。根据上面的CSV文件,我们应该在Thread Group中定义最少3个线程。

在此配置之后,JMeter将在每次执行线程时自动调用Http Request Defaults配置。

CSV数据集配置

enter image description here

HTTP请求默认值

enter image description here

HTTP请求(仅设置路径)

enter image description here

正则表达式提取器(可选以查找特定响应)

enter image description here

将找到的正则表达式结果写入文件(可选)

enter image description here

来源:http://www.codesenior.com/en/tutorial/JMeter-Dynamically-Change-Server-Name-Using-CSV-Data-File

答案 3 :(得分:0)

如果查看documentation,使用CSV在启动时加载变量非常简单:

  

创建一个包含用逗号分隔的用户名和密码的文本文件。将它放在与测试计划相同的目录中。

     

将CSV DataSet配置元素添加到测试计划中。将变量命名为USER和PASS。

     

使用$ {USER}替换登录名,使用相应采样器上的$ {PASS}替换密码

     

CSV数据集元素将为每个线程读取一个新行

需要注意的重要事项是最后一行 - 也许你正在转向新的线程组,但是你的变量都在一行中。或者,将它们放在一个组的多行上也会引起问题。

答案 4 :(得分:0)

CSV数据集是更改大量值的简便方法。

如果您希望从命令行执行此操作,可以将域和登录凭据设置为PROPERTIES,然后从命令行定义属性