我有一个简单的Jmeter测试,我有一个属性来设置URL。 Jmeter测试中的PATH设置如下。
${__P(GET_URL,)}
这适用于我一直使用的所有网址,但我需要在网址组件中传递变量的网址除外。
例如,当我使用http://server:port/getemployeelist
-JGET_URL=/getemployeelist
然后我创建了一个CSV配置元素来填充变量EMP_ID
。
然后,如果我使用-JGET_URL=/getemployee/${EMP_ID}
运行测试,则EMP_ID
变量不会被替换。 Jmeter测试给出了如下错误:
java.net.URISyntaxException:索引xx处的路径中的非法字符:https://:// getemployee / $ {EMP_ID}
感谢任何帮助/指针。
答案 0 :(得分:0)
它不会以这种方式工作,JMeter在启动时对${EMP_ID}
一无所知,您需要将此${EMP_ID}
附加到HTTP Request采样器“路径”在运行时
启动JMeter:
jmeter -JGET_URL=/getemployee/
使用CSV Data Set Config阅读CSV文件中的EMP_ID
在HTTP请求采样器中使用类似/${__P(GET_URL,)}/${EMP_ID}
的结构来组合通过-J
命令行参数指定的JMeter属性和源自CSV文件的JMeter变量。
如果出现任何问题,请首先检查 jmeter.log 文件 - 它通常包含足够的故障排除信息。如果没有任何可疑之处 - 使用Debug Sampler and View Results Tree listener combination检查请求和响应详细信息,变量和属性名称和值等。
答案 1 :(得分:0)
前段时间曾问过这个问题。想到发布最终最终实现的解决方案。在该解决方案中,我创建了一个带有HttpSampler.path替换变量的模板jmx,然后在运行时替换该路径。以下是完成脚本编写的要点。
事实证明这是适用于各种API调用模式的更简单解决方案。
<stringProp name="HTTPSampler.path">#PATH#</stringProp>
此jmx具有CSV配置元素,可填充变量“ EMP_ID”。要创建此文件,只需使用任何URL创建一个新测试,然后将其保存为模板,并用替换变量#PATH#替换URL。
sh run_any_api.sh URL=http://server:port/myapp/employees/${EMP_ID}
sed "s/#PATH#/$URL" jmeter_test_template.jmx > jmeter_test_template.current_test.jmx
jmeter -t jmeter_test_template.current_test.jmx
rm jmeter_test_template.current_test.jmx