1. 关于文件上传~
使用jmeter做自动化的时候。需要上传图片到服务器~
此时的Content-Type与平时请求的时候,是不一样的。这里是multipart/form-data,对应jemter中
你以为这就完了?最坑的来了。Jmeter中,你新加了请求头,新饿请求头他并不会覆盖原先的请求头!不会覆盖!
在有默认的请求头的前提下,你修改了请求头,不会覆盖,而是添加,最终的请求头中Content-Type:application/json,multipart/form-data。
在需要上传图片的时候,需要把原先的请求头给移除,移除的方法有很多,我这边用的BeanShell前置处理器,在执行上传的请求前,将原先的请求头移除
在上传完图片后,记得把请求头改回来,可以用BeanShell后置处理器,将请求头重新置上
import org.apache.jmeter.protocol.http.control.Header;
sampler.getHeaderManager().add(new Header("Content-Type","application/json"));
sampler.getHeaderManager().add("Content-Type","application/json");
当然,也有更省力的办法,重新添加一个请求头~
2. 关于引用路径
全流程测试脚本,或者是需要引用各个模块,较为复杂的脚本,可能会存在A脚本中引用了B脚本,B脚本中又引用了C脚本,并且这三个脚本都不在同一个目录的情况。
我的文件目录如下:
|--index.jmx
|--setUp
|-----setUp.jmx
|-----modules
|--------setUp4setUp.jmx
最外层使用index.jmx脚本开始,setUp文件夹与index.jmx在同一层级目录下,setUp文件下包含setUp.jmx脚本和modules文件夹,在modules文件夹下,包含脚本文件setUp4setUp.jmx。
在index.jmx中引用setUp.jmx很好处理,include控制器,文件名:\setUp\setUp.jmx就完事了。
在setUp.jmx中引用setUp4setUp.jmx脚本,也很简单,include控制器,文件名:\modules\setUp4setUp.jmx就也完事了。
但是这时候去跑index.jmx他会报错,说找不到setUp4setUp.jmx?!
打开jmeter的日志,看看啥情况~
java.io.IOException: loadIncludedElements -failed for: D:\modules\setUp4setUp.jmx and E:\autoTest\ticLink\modules\setUp4setUp.jmx
at org.apache.jmeter.control.IncludeController.loadIncludedElements(IncludeCo