JMeter上传文件

JMeter上传文件,第1张

HTTP请求常见的content-type分为3种:application/json、x-www-form-urlencoded、multipart/form-data,当请求是上传文件时,需要用到multipart/form-data方式。比如一个上传文件的接口请求参数是这样:

这代表该请求包或友括参数类型的入参infoMap,以及文件importFile。

勾选Use multipart/form-data,在随请求一起提交的文件中,添加文件路径(如果使用相对路径,则需要将文件置于和测试计划衫缺槐同一位置),扮配参数名称为importFile,类型为image/png。

利用Jmeter测试上传文件,首先可根据接口文档或者抓包分析文件上传的接口。

以下是我通过谷歌自带的抓包所截取的文件上传唯告的接口

Jmeter 新建一个Http  Request 采样器,填写相关的接口地址信息,如图

然后就要填写post的内容,此时再看抓包截取中山返的请求内容,如图:

jmeter 设置请求信息,如图:

此时,添加结果树,查看响应报文,一直报文件不存在

查了许多资料,有可能是因为文件上传路径的'\'被编码了,服务器无法识别

此卖饥时,需在http request 设置 implementation 为 Java ,让请求内容不被编码,如图:

此时,上传成功

基本的参数为:1、上传文件勾选form-data,这是必须勾选的;文件名称必须写全路径(如果与jmx文件不在同一目录下),否则会报错找不到文件,参数名称写file;mime类必须替填写,因为我是jmeter5.2.1版本,不填写会报错;

2、这些基本参数填写后仍然时是报错“文件上传上传失败”,找了后端拆吵清开发帮忙定位说是content-type不对,查看request header发现果然是格旅前式不正确,错误的请求中 content-type如下

3、然后恍然大悟发现自己在thread下已经设置了通用的header manager如下,导致content-type格式不正确

4、最后在网上找了这个方法,在http sample的碰笑前后分别添加beanshell前置处理和beanshell后置处理,最后终于解决了问题。

原文链接:https://blog.csdn.net/xingyunpi/java/article/details/77930476    

在上传文件的HTTP request sampler下,加一个BeanShell PreProcessor, 将全局的content-type remove掉,就可以了. 脚本:

sampler.getHeaderManager().removeHeaderNamed("Content-Type")

如果接下来的case还想再加回content-type=application/json, 如下:

import org.apache.jmeter.protocol.http.control.Header

sampler.getHeaderManager().add(new Header("Content-Type","application/json"))


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12321139.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存