apifox对一批文件批量请求一个接口
##STEP1
新建csv文件:
打开excel,输入filename,下面为需要上传的文件名,另存为csv文件
## STEP2
新建接口请求,参数为csv,header加contenttype
前置操作->添加自定义脚本,此脚本为读取filename列的信息,建议大家用deepseek调试或者别的都行,反正不要用豆包,写的跟答辩一样。
这边的console打印的详细一些,后面有问题好排查。
// 前置脚本
console.log("开始设置文件上传参数");try {// 获取文件路径let filePath = null;// 方法1: 从迭代数据中获取const iterationData = pm.iterationData.toObject();console.log("迭代数据:", JSON.stringify(iterationData, null, 2));// 查找文件路径if (iterationData.values && Array.isArray(iterationData.values)) {const fileItem = iterationData.values.find(item => item.key === "filename");if (fileItem) {filePath = fileItem.value;console.log("从迭代数据中找到文件路径:", filePath);}}// 方法2: 如果上面没找到,尝试直接获取if (!filePath) {filePath = pm.iterationData.get("filename");if (filePath) {console.log("直接获取到文件路径:", filePath);}}if (!filePath) {throw new Error("无法从迭代数据中获取文件路径");}// 确保路径是绝对路径if (!filePath.startsWith("D:\\")) {// 如果不是绝对路径,添加基础路径const basePath = "D:\\AAAAA0925上传\\";filePath = basePath + filePath;console.log("添加基础路径后的文件路径:", filePath);}// 规范化文件路径(重要!)// 将单反斜杠替换为双反斜杠const normalizedPath = filePath.replace(/\\/g, "\\\\");console.log("规范化后的路径:", normalizedPath);// 检查文件路径格式if (!normalizedPath.match(/[A-Z]:\\\\/)) {console.warn("文件路径格式可能不正确,不是绝对路径");}// 清除现有的body设置,重新构建pm.request.body = {mode: 'formdata',formdata: []};// 添加文件参数pm.request.body.formdata.push({key: 'file',type: 'file',src: normalizedPath // 使用src而不是value});console.log("最终请求配置:", JSON.stringify({mode: pm.request.body.mode,formdata: pm.request.body.formdata.map(item => ({key: item.key,type: item.type,src: item.src}))}, null, 2));} catch (error) {console.error("设置文件上传参数时出错:", error.message);// 紧急备用方案const backupPath = "D:\\\\AAAAA0925上传\\\\test.xlsx";pm.request.body = {mode: 'formdata',formdata: [{key: 'file',type: 'file',src: backupPath}]};console.log("使用备用文件路径:", backupPath);
}
## STEP3
自动化测试新建测试场景,随便取名就行
添加步骤-从接口导入,选择刚才的接口
测试数据就用到了刚才的csv文件
选择刚才的测试数据
点击运行,可以部分选中测试数据。右边的高级区还可以设置间隔时间,我设置了1000ms。
然后就有测试报告了,还能详细看到脚本打印的console
最后 我恨豆包写的什么答辩代码