前言:由于业务需求,需要通过jemter脚本进行文件上传。中间有两个难点,一是需要动态获取上个接口的uploadToken,二是上传文件接口的url还需动态传输进行编码。针对以上两个问题,进行了以下的处理方式,上传接口脚本设计如下。
1.建立测试计划,线程组
2.添加json提取器,获取文件上传令牌
3.设置上传文件的拼接路径,利用函数助手拼接编码参数
生成前的参数:
{"fileStatus":"T","fileStoretype":"A","fileType":"O","targetType":"image","uploadToken":"${uploadToken}"}
生成后的参数:
${__urlencode({ "fileStatus": "T"\, "fileStoretype": "A"\, "fileType": "O"\, "targetType": "image"\, "uploadToken": "${uploadToken}" })}
参数解析:上面代码中用到的是URL转码函数,打开函数助手对话框,选择__urlencode功能,选择把参数复制到函数参数的值中,点击生成,把箭头所指的值复制出来,就是jmeter本身生成的函数,可直接使用,生成结果如上所示
4.编写上传文件接口
生成的参数填写到路径上面:
设置好文件上传路径:
5.常用的MIME类型
//文档文件类型
.xlsx:application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
.ai application/postscript
.eps application/postscript
.exe application/octet-stream
.doc application/vnd.ms-word
.xls application/vnd.ms-excel
.ppt application/vnd.ms-powerpoint
.pps application/vnd.ms-powerpoint
.pdf application/pdf
.xml application/xml
.odt application/vnd.oasis.opendocument.text
.swf application/x-shockwave-flash
//压缩文件类型的
.gz application/x-gzip
.tgz application/x-gzip
.bz application/x-bzip2
.bz2 application/x-bzip2
.tbz application/x-bzip2
.zip application/zip
.rar application/x-rar
.tar application/x-tar
.7z application/x-7z-compressed
//文字类型
.txt text/plain
.php text/x-php
.html text/html
.htm text/html
.js text/javascript
.css text/css
.rtf text/rtf
.rtfd text/rtfd
.py text/x-python
.java text/x-java-source
.rb text/x-ruby
.sh text/x-shellscript
.pl text/x-perl
.sql text/x-sql
//图片类型的
.bmp image/x-ms-bmp
.jpg image/jpeg
.jpeg image/jpeg
.gif image/gif
.png image/png
.tif image/tiff
.tiff image/tiff
.tga image/x-targa
.psd image/vnd.adobe.photoshop
//音频文件类型的
.mp3 audio/mpeg
.mid audio/midi
.ogg audio/ogg
.mp4a audio/mp4
.wav audio/wav
.wma audio/x-ms-wma
//视频文件类型的
.avi video/x-msvideo
.dv video/x-dv
.mp4 video/mp4
.mpeg video/mpeg
.mpg video/mpeg
.mov video/quicktime
.wm video/x-ms-wmv
.flv video/x-flv
.mkv video/x-matroska
6.http请求默认值对整体脚本的影响
当整体脚本有http默认请求值,并且默认请求值里有参数时,接口会认为获取到了多个文件而进行报错,下图是默认请求值里有传token所造成的影响