千家信息网

Excel+Python十分钟跑完批量API,就是这么简单粗暴又好用

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,现在API测试被越来越多的公司重视,对于测试工程师来说每次收到需求之后首先要做的是研究需求文档。既然接口是两个独立系统之间同步数据或访问对方程序的途径,我们也就是要先看看这些接口到底是连接了哪两个系统
千家信息网最后更新 2026年10月31日Excel+Python十分钟跑完批量API,就是这么简单粗暴又好用


现在API测试被越来越多的公司重视,对于测试工程师来说每次收到需求之后首先要做的是研究需求文档。既然接口是两个独立系统之间同步数据或访问对方程序的途径,我们也就是要先看看这些接口到底是连接了哪两个系统,它们之间的关系到底是怎样的。所以一般需求文档里会包括接口名称,接口描述,接口类型,接口地址,推送参数,返回参数这几项内容。熟悉Postman的同学可以发现这些都是必需的部分:


有了这几项内容之后,我们需要把需求文档转换成Excel,这样不管是做案例管理,还是对比结果,都相对容易一些。而后期Python读取和写入也更方便。在Excel中,我们只写入变化的部分,而对于相对固定的,例如server信息则直接在Python代码中参数化。所以做出来的输入文档如下:


有了这些内容,我们还是使用xlrd和xlwt包对excel进行处理,对于如何使用xlrd和xlwt就不在本文做过多解释了。为什么要新建一个workbook2?因为在跑完一遍之后,如果我们发现有些接口跑出来的结果有问题,我们可以不用关闭workbook1,直接进行修改,然后rerun,就会生成新的workbook2,覆盖之前的结果,节省打开关闭workbook的时间。

workbook1 = xlrd.open_workbook(r"C:\Demo\API\API_Cases.xlsx")

  workbook2 = xlwt.Workbook(encoding='utf-8')

  sheet1 = workbook1.sheet_by_index(0)

  sheet2 = workbook2.add_sheet("response")

读取内容之后,我们对需要参数化的部分进行修改,一般情况下,url的前半部分为http://xx.xx.xx.xx:8080不变,所以我们只需要把excel中第二列取出来拼接成url即可,body部分也如是,如果有固定部分的body,我们可以在python中直接定义,然后与excel中的内容进行拼接:

par_url = sheet1.col_values(1)

  body = sheet1.col_values(2)

当然,拼接的代码需要写在循环里面:

request_url = 'https://postman-echo.com' + par_url[i]

  print(request_url)

执行的时候,我们用到的是requests这个包,如果需求中既有GET,又有POST,又有PUT,还有DELETE,由于用到的参数不同,我们可以分别处理。对于不同请求需要用到的不同的header,我们也可以在循环里对其进行定义,如果区别很大,我们也可以在excel中单独定义一列,然后在代码中加入相应的读取语句即可。对于POST类型的请求,我们需要以下几个参数:

response = requests.post(url=request_url, headers={}, data=body[i])

  print(body[i])

在执行完之后,如果直接写入excel,我们打开response文件之后会发现,所有的返回内容都变成了一行,非常不便于分析。所以我们需要先对返回的数据进行处理,再写入excel。如果返回的内容中包含中文,则必须加上ensure_ascii=False, 否则就会出现编码问题。

json_dic = json.dumps(json.loads(response.content), indent=4, ensure_ascii=False)

最后,我们把整理好的输出内容写入新建的excel文档并保存,就大功告成了。

sheet2.write(i, 0, json_dic)

  workbook2.save(r"C:\Demo\API\response.xls")

其中遇到了一些问题,也在这里提示一下,比如在POST请求中,有些参数是随机数,导致每次发送请求的时候都需要手动修改,否则就会报"已存在"之类的错,这时候我们需要用到random这个包。我们以生成10位随机数为例,在代码中用生成的10位随机数替换掉body中{{random}}的内容:

random_num = str(math.floor(1e10 * random.random()))

  response = requests.post(url=request_url, headers={}, data=body[i].replace('{{random}}', random_num))

运行结果如图:


生成的新文件:


打开这个response.xls,可以看到50个API已经跑完了。点进A1可以看到response的具体内容:

加我VX:17324089390 回复关键词"测试"领取限量软件测试学习资料哦~~

内容 参数 接口 文档 部分 需求 代码 结果 测试 生成 不同 问题 随机数 两个 之间 数据 文件 时候 类型 系统 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技开发公司 亿账通互联网科技 万达互联网科技 深圳期待互联网科技 互联网科技咨询 互联网科技公司的市场部门 福州新华互联网科技学校 知乎 昭通云南众福互联网科技有限公司 银川新华互联网科技职业技术培训学校图片 互联网经济与金融科技 互联网科技公司实习生 乌苏新华互联网科技做什么的 朱啸虎曾投资哪些互联网科技企业 科技大学互联网 无锡工业互联网科技有限公司 上海京穆互联网科技有限公司 21世纪互联网科技成就 互联网科技快讯热点 互联网科技收购价值 亚光科技低轨卫星互联网 广州万易互联网科技有限公司 华服互联网科技怎么样 互联网科技巨头监管 嘟嘟瓜互联网科技 未来的互联网科技 金融科技与互联网金融相同和不同 互联网与数字科技关系 互联网科技企业商标注意事项 互联网公司属于科技吗 青岛互联网科技园
0