前言

为了更好的让openpyxl在工作中使用,将openpyxl的常用操作封装起来,这样不仅复用性高,而且阅读性好

直接上代码

 #!/usr/bin/env python
# -*- coding: utf-8 -*- """
__title__ = openpyxl操作Excel工具类
""" import openpyxl class ExcelUtil:
workBook = None
workSheet = None def load_excel(self, path):
"""
加载Excel
:param path: 需要打开的Excel的路径
"""
self.workBook = openpyxl.load_workbook(path) def get_sheet_by_name(self, name):
"""
获取sheet对象
:param name: sheet名
"""
self.workSheet = self.workBook.get_sheet_by_name(name) def get_sheet_by_index(self, index=0):
"""
获取sheet对象
:param index: sheet的索引
"""
# 获取workBook里所有的sheet名 -> list
sheet_names = self.workBook.get_sheet_names()
# 根据索引获取指定sheet
self.workSheet = self.workBook[sheet_names[index]] def get_cell_value(self, col, row):
"""
获取cell的值
:param col: 所在列
:param row: 所在行
"""
try:
return self.workSheet.cell(column=col, row=row).value
except BaseException as e:
return None def get_cell_value_by_xy(self, str):
"""
获取cell的值
:param str: 坐标
"""
try:
return self.workSheet[str].value
except BaseException as e:
return None def get_sheet_rows(self):
"""
获取最大行数
"""
return self.workSheet.max_row def get_sheet_cols(self):
"""
获取最大列数
"""
return self.workSheet.max_column def write_data(self, row, col, value, path):
"""
写入数据
"""
try:
self.workSheet = self.workBook.active
self.workSheet.cell(column=col, row=row, value=value)
self.workBook.save(path)
except BaseException as e:
print(e)
return None def get_excel_data(self):
"""
获取表所有数据
:return: list
"""
# 方式一
data_list = tuple(self.workSheet.values)
# 方式二
# data_list = []
# for i in range(self.get_sheet_rows()):
# data_list.append(self.get_row_value(i + 2))
return data_list def get_row_value(self, row):
"""
获取某一行的内容
:param row: 第几行 -> str **从1开始**
:return: list
"""
# 方式一
row_list = self.get_excel_data()[row]
# 方式二
# row_list = []
# for i in self.workSheet[str(row + 1)]:
# row_list.append(i.value)
return row_list def get_col_value(self, col='A'):
"""
获取某一列的内容
:param col: 第几列 -> str
:return: list
"""
col_list = []
for i in self.workSheet[col]:
col_list.append(i.value)
return col_list def get_row_num(self, case_id):
"""
获取行号
:param case_id: 用例编号
:return:
"""
num = 1
col_data = self.get_col_value()
for data in col_data:
if case_id == data:
return num
num += 1
return 0 excelUtil = ExcelUtil() if __name__ == '__main__':
path = 'F:/interface/case/test.xlsx'
# 读取excel文件
excelUtil.load_excel(path)
# 获取某个sheet
excelUtil.get_sheet_by_name("Sheet1")
excelUtil.get_sheet_by_index()
# 获取某个cell的值
data = excelUtil.get_cell_value(col=1, row=1)
print(data)
data = excelUtil.get_cell_value_by_xy("A3")
print(data)
# 获取sheet行数
data = excelUtil.get_sheet_rows()
print(data)
# 获取sheet列数
data = excelUtil.get_sheet_cols()
print(data)
# 获取某一行数据
data = excelUtil.get_row_value(0)
print(data)
# 获取某一列数据
data = excelUtil.get_col_value()
print(data)
# 写入数据
excelUtil.write_data(row=9, col=1, value="test", path=path)
# 获取全部数据
data = excelUtil.get_excel_data()
print(data)
# 获取行号
data = excelUtil.get_row_num('imooc_001')
print(data)
 

python接口自动化测试 - openpyxl封装类的更多相关文章

  1. python接口自动化测试 - openpyxl基本使用

    前言 当你做接口自动化测试时,测试用例逐渐变多情况下,如果所有测试用例都通过代码管理将会使得代码十分臃肿,而且维护成本会很高: 所以我们一般会通过Excel去管理所有的测试用例,而openpyxl库提 ...

  2. python接口自动化测试二十七:密码MD5加密 ''' MD5加密 ''' # 由于MD5模块在python3中被移除 # 在python3中使用hashlib模块进行md5操作 import hashlib # 待加密信息 str = 'asdas89799,.//plrmf' # 创建md5对象 hl = hashlib.md5() # Tips # 此处必须声明encode # 若写法为

    python接口自动化测试二十七:密码MD5加密   ''' MD5加密 '''# 由于MD5模块在python3中被移除# 在python3中使用hashlib模块进行md5操作import has ...

  3. python接口自动化测试七:获取登录的Cookies

    python接口自动化测试七:获取登录的Cookies,并关联到下一个请求   获取登录的cookies:loginCookies = r.cookies 把获取到的cookies传入请求:cooki ...

  4. Python接口自动化测试框架实战 从设计到开发

    第1章 课程介绍(不要错过)本章主要讲解课程的详细安排.课程学习要求.课程面向用户等,让大家很直观的对课程有整体认知! 第2章 接口测试工具Fiddler的运用本章重点讲解如何抓app\web的htt ...

  5. 基于Python接口自动化测试框架+数据与代码分离(进阶篇)附源码

    引言 在上一篇<基于Python接口自动化测试框架(初级篇)附源码>讲过了接口自动化测试框架的搭建,最核心的模块功能就是测试数据库初始化,再来看看之前的框架结构: 可以看出testcase ...

  6. python - 接口自动化测试实战 - case1 - 再次优化版

    本次优化: 1.  各级分Package 2.  封装[ReadExcel]类 3.  封装[ReadConfig]类 4.  封装[GetLog]类 5.  引入ddt数据驱动测试,优化测试用例代码 ...

  7. python 接口自动化测试(三)

    1.WriteIni.py import ConfigParser cf = ConfigParser.ConfigParser() cf.add_section("PC_WSDL" ...

  8. 记录python接口自动化测试--简单总结一下学习过程(第十目)

    至此,从excel文件中循环读取接口到把测试结果写进excel,一个简易的接口自动化测试框架就完成了.大概花了1周的时间,利用下班和周末的时间来理顺思路.编写调试代码,当然现在也还有很多不足,例如没有 ...

  9. python接口自动化测试框架实现之字符串插入变量(字符串参数化)

    问题: 在做接口自动化测试的时候,请求报文是json串,但是根据项目规则必须转换成字符串,然后在开头拼接“data=” 接口中很多入参值需要进行参数化. 解决方案: 1.Python并没有对在字符串中 ...

随机推荐

  1. C# 性能分析 反射 VS 配置文件 VS 预编译

    本文分析在 C# 中使用反射和配置文件和预编译做注入的性能,本文的数据是为预编译框架,开发高性能应用 - 课程 - 微软技术暨生态大会 2018 - walterlv提供 本文通过代码生成工具,使用C ...

  2. sqlyog提示:没有执行查询。请在 SQL 窗口中输入查询或将光标放在一个查询上。

    以下内容纯属猜测: sqlyog 在执行输入的sql语句时,对已经执行过的语句,是不会再执行的,所以出现这个问题,很可能是sql语句没有修改,就试图执行第二遍.

  3. 计算机网络OSI模型

    一. 理想模型-OSI 7层模型 那么数据是如何传输的呢?看下图:上层的Header+DATA作为新的Data再次被封装,到达目的地后就像剥洋葱一样掐头(去尾)最终留下你所要传的数据. 各层功能详细阐 ...

  4. Tomcat 类加载器打破双亲委派模型

    我们分为4个部分来探讨: 1. 什么是类加载机制? 2. 什么是双亲委任模型? 3. 如何破坏双亲委任模型? 4. Tomcat 的类加载器是怎么设计的? 我想,在研究tomcat 类加载之前,我们复 ...

  5. 【Linux】centos查看防火墙是否关闭

    查看防火墙的状态的命令为: sudo systemctl status firewalld 打开防火墙的方式有两种,一种是打开后重启会恢复回原来的状态,命令为: sudo systemctl star ...

  6. DQN 强化学习

    pytorch比tenserflow简单. 所以我们模仿用tensorflow写的强化学习. 学习资料: 本节的全部代码 Tensorflow 的 100行 DQN 代码 我制作的 DQN 动画简介 ...

  7. 【重学Node.js 第4篇】实现一个简易爬虫&启动定时任务

    实现一个简易爬虫&启动定时任务 课程介绍看这里:https://www.cnblogs.com/zhangran/p/11963616.html 项目github地址:https://gith ...

  8. 深入Synchronized的实现原理与源码分析

    前言 一.synchronized的特性 1.1 原子性 1.2 可见性 1.3 有序性 1.4 可重入性 二.synchronized的用法 三.synchronized锁的实现 3.1 同步方法 ...

  9. __str__、__repr__和__format__

    obj.__ str __ ()是面向用户的,该方法将实例转换为一个字符 obj.__ repr __ ()面向程序员,该方法返回一个实例的代码表示形式,通常用来重新构造这个实例,repr()函数返回 ...

  10. 【退役记】CSP2019 退役记

    Day -1 机房自习,因为一些奇怪原因心不在焉 我可能太在意csp了 晚上有点扛不住去七楼阳台思考人生,得到了一些惊人的结论想下来由于某种原因继续跑到七楼思考人生 然后晚自习下课仰天大笑出门去,我辈 ...