未替换变量的Jmeter动态URL属性

nr7wwzry  于 2022-11-09  发布在  其他
关注(0)|答案(2)|浏览(208)

我有一个简单的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}
感谢您的帮助/指点。

o2rvlv0m

o2rvlv0m1#

它不会以这种方式工作,JMeter在启动时对${EMP_ID}一无所知,您需要在运行时将此${EMP_ID}附加到HTTP请求采样器“Path”中
1.启动JMeter为:

jmeter -JGET_URL=/getemployee/

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检查请求和响应的详细信息,变量和属性的名称和值等。

huwehgph

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

相关问题