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