目录
1.Jmeter完成文件上传
2.Jmeter完成文件下载
3.Jmeter完成文件列表的获取
4.Jmeter JSON Extractor获取数组类型的数据
5.正则表达式获取数组类型的数据
6.Jmeter获取文件列表与下载接口串联测试
7.Jmeter上传文件与下载接口串联测试
1.1.查看接口文档
登录接口:
文件的上传接口:
1.2.首先完成登录功能
登录成功后,下面来完成文件的上传功能!
1.2.获取token信息
从文件的上传接口文档,我们可以看到请求头ct需要一个token信息,token信息可以从登录的响应结果里获取到
如果想要查看是否提取到token信息,可以添加一个Debug Sampler
可以看到,能获取到token信息!
1.3.完成单个文件的上传
运行结果,察看结果树如下,可以看到上传文件成功!
1.4.批量完成文件的上传
从单个文件的上传中,我们可以总结到,文件的名称(也就是文件的绝对路径名称)filePath,文件的大小fileSize,以及文件上传到网盘的显示名fileName是可变的,这时我们可以使用参数化,将这3个参数当成变量,使用CSV Data Set Config来实现批量上传。
在本地新建一个"批量上传.csv"的文件,包含3个字段,fileName、fileSize、filePath,如下所示:
因为有两条数据,先将线程组(文件的上传)的循环次数设置成:2,会执行两次文件上传的请求,但我希望登录请求只执行一次,所以可以给登录请求添加一个"逻辑控制器"-->"仅一次控制器"
运行结果,察看结果树如下:
其中,fileId在下面文件的下载中会用到!
2.1.查看接口文档
2.2.单个文件的下载
从查看接口文档可以知道,文件下载之前,需要先登录并获取token值。
token值获取到之后,就可以进行单个文件的下载了!
从响应数据中可以看到一个fileUri链接地址,此链接地址才是文件真正的下载地址,所以还需要创建一个HTTP请求,将目标文件保存到本地。
如何将文件保存到本地?
为了检验是否获取到fileUri,可以添加一个Debug Sampler
察看结果树,可以看到获取到了fileUri
可以看到报错了,解决方法是:在HTTP请求(将文件保存到本地)下添加一个HTTP信息头管理器,将token关联进去。
2.3.批量完成文件下载
可以将需要下载的目标文件的fileId存放到一个txt文本里,例如:fileId.txt,如下所示:
然后使用CSV Data Set Config获取fileId。
HTTP请求(批量完成文件的下载)-->fi的值为${fileId}
运行结果,查看目标文件是否全部下载了,大小以及内容是否正确。
文件列表获取的接口文档如下:
与文件的上传、下载一样,文件列表的获取也要先登录获取token值之后,才能进行下一步的操作!
在获取token之后,添加一个HTTP请求(获取文件列表),并添加HTTP信息头管理器,如下所示:
察看结果树,可以看到,能将文件列表全部获取到,响应数据为json格式,如下所示:
在上面文件列表的获取中,我们能够看到,获取的文件列表是json格式的,在json串中,{}表示对象,[]表示数组。
从上图中能够看到fileId从Result[0]~Result[183],总共184条数据,与count值一致。
可以看到JSON Path表达式为:$.data.files[0:3].fileId
下面我们使用JSON Extractor来提取响应结果的值!
如果想要查看是否获取到值,可以添加一个Debug Sampler,运行结果,可以看到获取到了fileName
需求:使用正则表达式提取器提取fileId
需求:获取索引为101,102的文件,并下载到本地。
可以看到,获取文件列表请求返回的数据fileId,并没有传递给文件的下载请求!
获取文件列表的请求返回的数据如下:
我们可以添加一个ForEach控制器,循环遍历fileId变量,并将文件的下载操作放在ForEach控制器下,这样每循环一次,就可以执行一次下载操作!
运行结果,察看结果树,可以看到文件下载成功,在本地盘符可以看到下载的文件。
与上一节“获取文件列表与下载接口串联测试”类似,同样需要在“文件的上传”请求下面添加一个JSON Extractor,用来提取“文件的上传”请求返回的fileId变量,然后添加一个ForEach控制器,并将文件的下载操作添加在ForEach控制器下,每循环一次fileId变量,就执行一次下载操作!
点击这里下载一粒云项目自动化脚本