Form-Data 格式文件上传在 CICD 中的实现方式
在项目的开发过程中,有的接口需要传递 file 类型的参数值,以满足业务需求,这种业务在网络通信中通常会考虑使用 Form-Data 格式。
Form-Data 是一种数据传输格式,采用键值对的结构,它允许将二进制文件和其他表单字段数据携带在请求体一起发送至服务器,用于在客户端和服务器之间传输表单数据,常见于文件上传场景。
在 Apifox 中,假设有一条待测试的接口需要携带 文件 至服务器,接口在本地能够获取文件并成功上传:
但是,如果将其放置到持续集成环境(如 Jenkins)中时,却发现找不到该文件,这是什么原因呢?
这是因为,在 Apifox 中,使用自动化测试生成 CICD 配置 并运行于持续集成环境(如 Jenkins)时,如果接口中需要传递文件参数,那么需要将文件的参数值设置为 变量,由变量来获取服务器中的实际文件路径。
那为什么要设置为变量?
变量区分了在读取文件路径的时候用的是 本地值(保存在本地,不会同步到服务器)还是 远程值(保存在服务器,CICD 运行时使用)。
将参数值设置为变量
在 “接口文档” -> “修改文档” 选项中的请求参数处,在给相关字段选择文件类型之后,通过 批量编辑 将上传文件的路径改为变量:
将请求参数第 4 个位置的示例值改为变量,该变量可配置在 环境变量 中:
配置环境变量的值
在相对应的测试或 CICD 的环境中设置相对应的本地值和远程值
- 在客户端测试时会使用本地值,所以需要在本地测试环境的环境变量中将 本地值 填写为本地的文件路径;
- 在 CICD 环境中会使用远程值,所以在 CICD 中测试时需要将相对应环境的环境变量的 远程值 填写为服务器的文件路径,你还需要将相对应的文件放到 CICD 的服务器相对应的文件路径中,否则会报错。
在 CICD 中运行
在 “自动化测试 -> CI/CD” 中,新建 CICD,选择“测试环境”,填写“循环次数”,选择“CICD 平台”,保存后即可生成配置文件。
将配置文件复制并粘贴到集成环境(如 Jenkins)中即可运行: