我的组织正在尝试使用JMeter作为测试自动化套件的一部分来测试一些后端REST API . 目前,其中一个支持使用JSON查询作为从GET请求获取过滤结果的方法 .
我们正在使用JMeter UI来创建这些测试,因为所有其他API调用都在HttpClient3.1 HTTP请求实现下工作,这是我目前用来实现此功能的实现 . 通过这个实现,我在查看结果树中的失败时得到以下结果(响应数据部分)我使错误略微更通用以保护一些IP:
java.lang.IllegalArgumentException:无效的uri'https:// server:port / restservice / v1 / users?firstname_query = {“in”:[“User1FirstName”,“User2FirstName”]}':org.apache中的查询无效 . commons.httpclient.HttpMethodBase . (HttpMethodBase.java:222)org.apache.commons.httpclient.methods.GetMethod . (GetMethod.java:89)at org.apache.jmeter.protocol.http.sampler.HTTPHC3Impl.sample( HTTPC3Impl.java:229)org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy.sample(HTTPSamplerProxy.java:74)atg.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.sample(HTTPSamplerBase.java: 1146)org.apache.jot.protocol.http.sampler.HTTPSamplerBase.sample(HTTPSamplerBase.java:1135)位于org.apache.jmeter的org.apache.jmeter.threads.JMeterThread.process_sampler(JMeterThread.java:434) java.lang.Thread.run中的.threads.JMeterThread.run(JMeterThread.java:261)(未知来源)
我也使用Java实现尝试了相同的请求并获得了类似的结果 .
如果有任何想法或您需要更多信息,请告诉我,并提前再次感谢您提供的任何帮助 .
1 回答
您的HTTP请求配置有点不正确 . JSON实体包含大括号
{}
,这些大括号在URL中不允许,因此您需要对它们进行编码 .配置您的HTTP Request采样器,如:
确保勾选“编码”框 .
这样您就可以使用HTTP GET请求发送JSON . 您可以使用View Results Tree listener来检查请求和响应详细信息:
您可能还需要将HTTP Header Manager添加到测试计划中,并将其配置为发送
Content-Type
标头,其值为application/json
. 有关正确配置JMeter以测试REST API的更多详细信息,请参阅Testing SOAP/REST Web Services Using JMeter文章 .