当前位置: 首页 > news >正文

Python接口自动化封装导出excel方法和读写excel数据

一、首先需要思考,我们在页面导出excel,用python导出如何写入文件的

封装前需要确认python导出excel接口返回的是一个什么样的数据类型
如下:我们先看下不对返回结果做处理,直接接收数据类型是一个对象,无法获取返回值

 此时我们需要对返回数据做处理,如下;
response.text # 响应文本数据(字符串)

 把返回的数据类型变成了dict,response.json()** 这样就方便我们按照字典的操作去拿数据**

但是 我们现在的操作是要获取导出文件的数据,导出excel是一个二进制文件:

response.content # 响应返回的内容(二进制)

接下来我们按思路response.content方法来把这个二进制文件写入excel中:

二、如下封装:

class Export:"""导出域"""def __init__(self, token):self.token = tokenself.headers = {'Authorization': self.token,'Content-Type': 'application/json;charset=UTF-8'}```
def export_sku_excel(self, payload, path):"""商品:商品明细导出"""url = f'{HOST}/api/v1/commodity/exportSKU'res = client.post(url=url, json=payload, verify=False, headers=self.headers)resp = res.contentwith open(path, 'wb') as f:  # 第一个参数是保存文件路径,不加路径就是当前路径if res.status_code == 200:return f.write(resp)else:return False

如上,先接收二进制文件,然后使用操作excel方法‘wb’写入二进制文件

以上写入文件后,测试过程我们需要再读取文件数据来断言,如下:

class ExcelMethod:def __init__(self, filename):self.filename = filenamedef read_excel(self, row, col):"""读取导出文件的数据Returns:excel单元格数据"""wb = xlrd.open_workbook(self.filename)sheet_name = wb.sheet_names()[0]sheet1 = wb.sheet_by_index(0)cellInfo = sheet1.cell_value(row, col)  # 获取文件中某单元格的值return cellInfo  # 返回文件单元格数据

以上是一个写入和读取导出excel的封装方法
值得注意的是,我用的是python内置库xlrd读写excel文件,xls格式文件xlrd可以读写,且xlrd使用1.几的版本,最新版本不支持xls文件,openpyxl库只支持xlsx格式文件

 还有一种方法,使用pandas库也可以读取Excel文件

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

在这里插入图片描述

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你! 

http://www.lryc.cn/news/163071.html

相关文章:

  • React三属性之:refs
  • 将Vue项目迁移到微信小程序中
  • php权限调整强制用户退出的解决方案
  • [uniapp]踩坑日记 unexpected character > 1或‘=’>1 报错
  • 面试求职-经典面试问题
  • 在Linux服务器上部署Tornado项目
  • JWT认证、drf-jwt安装和简单使用、实战之使用Django auth的User表自动签发、实战之自定义User表,手动签发
  • conda常用命令及问题解决-创建虚拟环境
  • 严选算法模型质量保障
  • 学习Bootstrap 5的第七天
  • VirtualBox(内有Centos 7 示例安装)
  • 在 Git 中删除不再位于远程仓库中的本地分支
  • 容器编排学习(九)服务管理与用户权限管理
  • 【C刷题】day1
  • zabbix配置钉钉告警、和故障自愈、监控java
  • 第九章 Linux实际操作——Linux磁盘分区、挂载
  • 设计模式-解释器设计模式
  • 实现 js 中所有对象的深拷贝(包装对象,Date 对象,正则对象)
  • PathVariable注解
  • 宋浩高等数学笔记(十二)无穷级数
  • 使用Clipboard插件实现Vue的剪贴板功能
  • Latex参考文献中大写字母编译后自动变成了小写,如何保持原字母大写形式
  • Jest单元测试相关
  • Scrum敏捷开发流程及关键环节
  • 微服务04-Gateway网关
  • YOLOV7改进-针对小目标的NWD(损失函数)
  • 计算机二级考试题库及答案
  • 2023国赛高教社杯数学建模C题思路分析
  • Ansible playbook简介与初步实战,实现批量机器应用下载与安装
  • [machine Learning]强化学习