我正在尝试创建JMeter测试,并针对不同的环境使用相同的测试 - QA,Staging,Dev等。 我想通过更改CSV文件或通过ant脚本传递值或通过命令提示符手动更改IP地址。不幸的是,我无法这样做。测试不会从CSV文件或命令提示符中获取值。
有人可以帮帮我吗。
先谢谢。
答案 0 :(得分:10)
我通常会在测试中添加HTTP Request Defaults元素并手动更改它。
否则,对于自动化,您可以使用脚本修改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数据集配置
HTTP请求默认值
HTTP请求(仅设置路径)
正则表达式提取器(可选以查找特定响应)
将找到的正则表达式结果写入文件(可选)
来源: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,然后从命令行定义属性