接口测试 Jmeter 中传 list 参数提交后报错

john · 2017年10月26日 · 最后由 江诗 回复于 2017年10月30日 · 2332 次阅读

该测试接口传参中含有 list 对象,见下图

提交请求后报错,报错内容如下:

,需要确认的是针对这种参数形式,jmeter 中有没有什么特殊的配置操作,在 postman 中配置该接口请求参数后报的也是同样的错误
ps:使用自己写的自动化测试脚本运行是没有问题的,如下图:

另外目前使用 jmeter 工具主要是为了做接口性能测试
希望有知道的大神可以解答下,非常感谢!

共收到 17 条回复 时间 点赞

建议看看 https://testerhome.com/topics/587

你的这个问题信息量太少,大家都无法回答。

{a:12345,b:12345,{c:123456,d:1234567}}楼主你这是 dict 好不啦

john #3 · 2017年10月27日 Author
陈恒捷 回复

感谢提醒,已重新修改

john #6 · 2017年10月27日 Author
chanper 回复

开发接口定义的是个 list 对象,其实也就是 json 串

既然传的是 json 串,,你把它转义一下再传呢,看你接口测试里面不是转义过的么?

为啥不用 body data? 把 json 放里面就好了

john #11 · 2017年10月27日 Author
Mr_Peace 回复

试过了,也是不行,现在通过运行自动化脚本后在 fiddler 上进行抓包,然后查看请求的 text 内容,请求内容如下:

直接复制到 jmeter 的 body 里面就可以请求成功了,不知道是不是因为参数里面有中文的原因,但是 jmeter 里面我之前也是设置了 utf-8 的模式的

勾选编码试试

john #9 · 2017年10月27日 Author
江诗 回复

你指的是在哪边勾选?

你看下接口文档 Header 里面有什么需要设置的,看 fiddler 抓出来的包 应该是 Content-Type = multipart/form-data
在 JMeter - HTTP Request Path 下面 有个 checkbox Use-multipart/form-data for POST
把 你的 json 放 Body Data 里
再试试吧

john #11 · 2017年10月27日 Author
Mr_Peace 回复

fiddler 抓出来的包显示的是这个,不是 Content-Type = multipart/form-data,刚用你的方法试了下,还是不行

postdata 里面的内容好像不对了

john 回复

你的 json 放 body 了么?

john #13 · 2017年10月27日 Author
Mr_Peace 回复

已经放了,另外消息头文件也根据抓包中显示的头文件改了也是不行

john 回复

那可能是我想错了。根据楼上有人说的 parameter tab 下面参数右边 有 编码的 checkbox 可以勾上试试。。
要是后面解决了,别忘了说下怎么解决的啊 😅

john #15 · 2017年10月27日 Author
Mr_Peace 回复

嗯,已经试了很多方法了,还是没什么头绪,现在暂时用的还是抓包的方法,然后拷贝到 jmeter 进行性能测试

john 回复

你在 jmeter 里也加上代理服务器,连到 fiddler ,对比看下客户端的请求和你用 jmeter 发出的请求有什么不同?

从你的截图里看,实际发送的数据做了很多转义(比如空格变成了 + 号),这类转义看起来是 url 的转义,正常 body 里面是不会做这些转义的,所以 jmeter 不会帮你做这个转义。你需要确定下是不是你们这个参数里面约定了必须做这个转义。

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册