接口自动化--读取Excel操作(openpyxl)
上次我们已经将requests库封装成我们想要的样子了,我们的接口自动化已经完成了最开始的一步了,接下来我们需要完成我们相应的其他模块的封装,下面简单介绍下我们在接口自动化需要用到的模块吧
在接口自动化中我们常用的模块有requests、openpyxl、pymysql、configparser、ddt、HTMLTestRunner等一些模块
下面介绍下openpyxl是怎么用的吧
安装方式
pip install openpyxl
使用方式
直接看代码块吧,详细描述在代码块里面的注释会写的
import openpyxl # 获取wb的对象
wb = openpyxl.load_workbook(r"D:\test.xlsx")
# 获取工作表
sheet = wb["test1"]
# 读取改工作表的最大行
print(sheet.max_row)
上面的只是一个openpyxl的简单用法,获取Excel里面的数据我直接封装到类里面了
下面的封装方法都是适用任何项目的
import openpyxl class ReadExcel:
"""读取Excel"""
def __init__(self, file_path, sheet_name):
self.file_path = file_path
self.sheet_name = sheet_name def open(self):
"""获取wb对象"""
self.wb = openpyxl.load_workbook(self.file_path) def get_sheet(self):
"""
获取sheet
"""
self.open()
sheet = self.wb[self.sheet_name]
self.wb.close()
return sheet def get_cell(self, row, col):
"""
获取单元格对象
"""
object = self.get_sheet().cell(row, col)
self.wb.close()
return object def get_cell_value(self, row, col):
"""
获取某一个单元格的值
"""
data = self.get_cell(row, col).value
self.wb.close()
return data def read(self):
"""读取所有数据"""
# 运用列表推导式获取title
headers = [i.value for i in self.get_sheet()[1]]
row_data = []
for row in range(2, self.get_sheet().max_row+1):
data = []
for col in range(1, self.get_sheet().max_column+1):
data.append(self.get_cell_value(row, col))
# 用zip函数将两个列表组合成字典
data_info = dict(zip(headers, data))
row_data.append(data_info)
self.wb.close()
return row_data def write(self, row, col, values):
"""
回写数据
:param row:
:param col:
:param values:
:return:
"""
self.get_cell(row, col).value = values
self.save()
return self.get_cell(row, col).value def save(self):
"""
保存
:return:
"""
self.wb.save(self.file_path)
读取所有的数据展示是这样的:


其实在做Excel的数据回写,一般是采用静态方法,我上面没有采用静态方法的原因是因为我的每一个wb对象使用完之后都是进行关闭的,所以不会有什么影响,但是如果说你的wb对象是在init方法中获取,建议还是回写操作用静态方法。
--------------------------------------------------------------------------------------------------------------------------------------学无止境,欢迎大家提意见,共同交流进步----------------------------------------------------------------------------------------------------------------------------------------------------------------------
接口自动化--读取Excel操作(openpyxl)的更多相关文章
- 接口自动化 之 unittest+ddt+openpyxl 综合
前面写过python 之 unittest初探 和 python 之 unittest+ddt 两篇文章.在之前的文章中,写过可以再次优化.今天写第三篇的目的,就是在原有基础上,基于 openpyxl ...
- 基于Python的接口自动化-读写excel文件
引言 使用python进行接口测试时常常需要接口用例测试数据.断言接口功能.验证接口响应状态等,如果大量的接口测试用例脚本都将接口测试用例数据写在脚本文件中,这样写出来整个接口测试用例脚本代码将看起来 ...
- python(读取excel操作-xlrd模块)
一.安装xlrd模块 到python官网下载http://pypi.python.org/pypi/xlrd模块安装,前提是已经安装了python 环境. 或者在cmd窗口 pip install ...
- python(读取 excel 操作 xlrd 模块)
一.安装 xlrd 模块 到 python 官网下载 http://pypi.python.org/pypi/xlrd 模块安装,前提是已经安装了 python 环境. 或者在 cmd 窗口 pip ...
- python接口自动化读取json,yaml配置文件+封装requests+unittest+HTMLRunner实现全自动化
# coding=utf-8 import json import requests class TestApi(object): """ /* @param: @ses ...
- (接口自动化)Python3操作MySQL数据库
基础语法: import pymysql #导入模块 conn = pymysql.connect(host='localhost',user='root', passwd='123456', db= ...
- 接口自动化——读取Excle中遇到的问题
一.module 'openpyxl' has no attribute 'load_workbook'问题 原因:在pycharm中py文件名字为openpyxl导致 修改方法:重新对py名字进行命 ...
- python接口自动化10-excel设计模式实战
前言 一.简介 1.环境准备:python+requests+excel+unittest+ddt,主要安装以下环境,其它一般都有了,没有自行安装: pip install xlrd pip inst ...
- 纯python自研接口自动化脚本更新版本,让小白也能实现0到1万+的接口自动化用例
查看完整文章点击原文链接:纯python自研接口自动化脚本更新版本,让小白也能实现0到1万+的接口自动化用例 你是否还在用postman\jmeter做接口自动化吗?用python的开源框架[unit ...
随机推荐
- JavaScript插件开发
一.前言 通过 "WWW" 原则我们来了解 JavaScript 插件这个东西 第一个 W "What" -- 是什么?什么是插件,我就不照搬书本上的抽象概念了 ...
- UA记录
安卓QQ内置浏览器UA: Mozilla/5.0 (Linux; Android 5.0; SM-N9100 Build/LRX21V) AppleWebKit/537.36 (KHTML, like ...
- java web开发入门汇总
servlet 用java语言开发动态资源网站的技术,在doGet方法中拼接显示html,在doPost方法中提交数据.类似于.net的ashx技术. servlet生成的class文件存放在tomc ...
- Gamma阶段第九次scrum meeting
每日任务内容 队员 昨日完成任务 明日要完成的任务 张圆宁 #91 用户体验与优化https://github.com/rRetr0Git/rateMyCourse/issues/91(持续完成) # ...
- Docker 常用命令速查手册
记录一下docker的日常使用命令,本文主要针对linux + mac操作系统而言,window是否适用不太确定,谨慎使用 1. docker进程 docker进程启动.停止.重启,常见的三种case ...
- 如何减少 webpack 构建 vue 项目的编译时间
背景 我司前端项目框架主要是 vue,多个项目聚集在同一个仓库下,共用公共组件.页面.工具函数等.基于以上前提,我们需要对不同的项目分别进行打包,并解决单页应用强制刷新引起的问题,所以没有使用 vue ...
- [转帖]java注解核心知识总结
java注解核心知识总结 2019-11-01 20:39:50 从事Java 阅读数 2 收藏 文章标签: java注解总结程序员 更多 分类专栏: java 注解 版权声明:本文为博主原创文 ...
- NPOI导出 The maximum column width for an individual cell is 255 characters
增加如下代码 ) { arrColWidth[column.Ordinal] = ; } //设置列宽 sheet.SetColumnWidth(column.Ordinal, (arrColWidt ...
- 配置 Nginx 反向代理 WebSocket
用Nginx给网站做反向代理和负载均衡是广泛使用的一种Web服务器部署技术.不仅能够保证后端服务器的隐蔽性,还可以提高网站部署灵活性. 今天我们来讲一下,如何用Nginx给WebSocket服务器实现 ...
- 论文笔记:LightGBM: A Highly Efficient Gradient Boosting Decision Tree
引言 GBDT已经有了比较成熟的应用,例如XGBoost和pGBRT,但是在特征维度很高数据量很大的时候依然不够快.一个主要的原因是,对于每个特征,他们都需要遍历每一条数据,对每一个可能的分割点去计算 ...