【Apifox】调用python脚本修改excel文件内容后,调用文件上传接口

最近,项目要求使用apifox编写接口自动化,所用系统使用文档批量操作比较频繁,于是研究了一下使用自定义脚本的方式,自动修改excel文件内容,并调用上传接口。
这里使用的python脚本,由于apifox调用脚本执行的命令,实际与命令行执行语句的形式一致(例如,脚本pm.execute(‘md5-json.py’, [‘abc’,‘bcd’]),实际执行命令为python md5-json.py abc bcd),所以,我猜想,我只要编写一个脚本,可以通过cmd命令行执行脚本中的函数,我就可以通过apifox来完成脚本的调用。于是,就有了以下脚本。

import openpyxl as op
import argparse

if __name__ == "__main__":
    parser = argparse.ArgumentParser()
    parser.add_argument('--empName', type=str, default=None)
    parser.add_argument('--empIdcard', type=str, default=None)
    args = parser.parse_args()
    print(f'员工姓名:,args.empName={args.empName}')
    print(f'身份证号:,args.empIdcard={args.empIdcard}')
    filePath = "E:\\apifox\\xxx.xlsx"  # 文件路径
    tableAll = op.load_workbook(filePath)
    table1 = tableAll['Sheet1']  # sheet名称
    table1.cell(2, 1, args.empName)  # 将员工姓名填入excel中的第二行第一列
    table1.cell(2, 2, args.empIdcard)  # 将员工身份证填入excel中的第二行第二列
    tableAll.save(filePath)

这里一共调用了两个库,openpyxl 用于执行excel的读写,argparse用于给python脚本传参,这里我一共定义了两个参数,都是string类型的。脚本编写成功后,可以通过cmd命令行来验证 是否可以传参及excel是否修改成功。
进入python文件所在路径,执行:python 文件名.py --empname=测试数据1 --empidcard=测试数据2
cmd命令行调用成功
到这里python脚本就准备好了,下一步,需要通过apifox来给我们的python脚本传参。
第一步,点击apifox右上角或者左下角的设置按钮,点击外部程序,打开目录,将刚才的python脚本丢进去。
第二步,再需要上传文件的接口处增加前置操作-自定义脚本:

	try {
    //员工姓名
    var empname = '--empName='+'测试';
    //获取员工身份证
    var empidcard = '--empIdcard='+pm.globals.get("emp_idcard1");
     
    //将员工姓名、身份证填写到批量减档的模板上
    pm.execute("projectReduce.py",[empname,empidcard]);
} catch (e) {
  console.error(e.message)
}

这里我的参数是从全局变量取值的,由于python执行的语句为:pm.execute(‘md5-json.py’, [‘abc’,‘bcd’]),所以我需要把需要的参数提前拼接成string格式。然后还加了一个异常处理,这里是为了获取python语句执行失败的报错信息的。
第三步,在接口传参的body里面,添加文件上传,增加对应的content-type,调试接口是否成功。
注:这种方法适合,一次修改的参数比较少的场景,如果修改的参数比较多,还可以通过先把前置脚本,把需要变更的参数传到txt文档,再通过python文件调用txt文件中的参数,实现变更excel文件参数值(虽然没试过,但是应该可行)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值