最近在项目中需要测试导入接口,该接口需要上传附件,并且开发要求上传多个不同的附件。
我司接口测试都是跑在MeterSphere上。
经过一番测试和研究,实现了上传不同附件的接口测试,现在分享给大家。
登录MeterSphere,新建一个场景,保存。
添加登录步骤,同时在后置步骤里提取 csrfToken,sessionId。

添加登录请求,Post请求,

在请求体里,手动上传附件:
字段类型file,点击+号上传附件,类型为application/octet-stream

下面关键点来了:登录到安装MeterSphere的机器,进入/opt/metersphere/data/body目录, MeterSphere所有的附件都保存在该目录下。
执行ls命令,可以看到 刚刚上传文件时新建的一个文件夹,类似这样的名称:
/opt/metersphere/data/body/3f14294d-ea3f-40bc-8e8e-cbf8ad4a38e9,这里的 “3f14294d-ea3f-40bc-8e8e-cbf8ad4a38e9”文件夹就有刚刚上传的附件。

要实现动态上传附件,只需要 在【自定义脚本】,或者 【前置脚本】 用新的文件 替换 这个目录下已有的文件,比如你可以把需要上传的50个文件放到/opt/metersphere/data/files目录下,每次上传附件时,可以在 【自定义脚本】,或者 【前置脚本】 里 用beanshell脚本 或者 写个java程序然后在【自定义脚本里】/【前置脚本里】里引用,替换 /opt/metersphere/data/body/3f14294d-ea3f-40bc-8e8e-cbf8ad4a38e9/目录下的文件。 /opt/metersphere/data/body/是固定的,3f14294d-ea3f-40bc-8e8e-cbf8ad4a38e9和您新建的场景关联,你可以在测试中用你的环境里产生的ID替换掉。
下图中引用的第三方jar包是我的同事写的,实现的就是把/opt/metersphere/data/files的文件,转换成openApi3.0格式,然后替换 /opt/metersphere/data/body/3f14294d-ea3f-40bc-8e8e-cbf8ad4a38e9/目录下的文件,实现 该接口测试 上传动态文件,每次执行上传的文件不一样。

此外也可以把该场景从MeterSphere上导出成jmeter格式,然后查看手动上传的附件在服务器上被保存在哪个目录下。
