前言

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

openpyxl简单介绍

  • 一个Python库,用于读取/写入Excel 2010  xlsx 、xlsm 、xltx 、xltm 文件
  • 不能操作 xls 文件

openpyxl简单概念

  • Workbook:excel工作表
  • Sheet:工作表中的一张表
  • Cell:其中的一个单元格
  • 简单步骤:打开Workbook,选中Sheet,操作Cell

openpyxl简单使用

 import openpyxl

 if __name__ == '__main__':
path = 'F:/imocInterface/case/imooc.xlsx'
# 读取excel文件
workbook = openpyxl.load_workbook(path)
# 读取所有sheet
sheet = workbook.get_sheet_names()
# 获取某个sheet
sheet = workbook[sheet[0]]
# 获取某个cell的值
cell_val = sheet.cell(row=2, column=2).value
print(cell_val)

包含知识点

  • 调用 load_workbook() 等同于调用 open()
  • 第8、10行代码可能浓缩成一行代码 workbook.get_sheet_by_name("sheet的名字") ,前提是你得知道sheet的命名
  • cell(row, column, value=None) 三个参数分别是:行,列,值;若设置了value相当于赋值操作,会覆盖原本的值

openpyxl操作单元格

访问单个cell

     # 方式一:获取A4单元格的值
cell_val = sheet['A4'].value
# 方式二:获取第二行,第二列的单元格的值
cell_val = sheet.cell(row=2, column=2).value

访问多个cell

     # A1-B3的单元格 共6个
cell_range = sheet['A1':'B3'] # A1-A3的单元格 共3个
cell_range = sheet['A1:A3'] # 第十行的单元格
cell_range = sheet[10] # 第1、2行的单元格
cell_range = sheet[1:2]

 注意:以上方法返回的是都是cell对象组成tuple

获取指定范围的cell

     # 返回行
for col in sheet.iter_rows(min_row=1, min_col=1, max_col=3, max_row=2):
for cell in col:
print(cell) # 返回列
for col in sheet.iter_cols(min_row=1, min_col=1, max_col=3, max_row=2):
for cell in col:
print(cell)

获取指定范围cell的测试结果

# 返回行
<Cell 'Sheet1'.A1>
<Cell 'Sheet1'.B1>
<Cell 'Sheet1'.C1>
<Cell 'Sheet1'.A2>
<Cell 'Sheet1'.B2>
<Cell 'Sheet1'.C2> # 返回列
<Cell 'Sheet1'.A1>
<Cell 'Sheet1'.A2>
<Cell 'Sheet1'.B1>
<Cell 'Sheet1'.B2>
<Cell 'Sheet1'.C1>
<Cell 'Sheet1'.C2>

官方提醒:出于性能考虑, sheet.iter_cols() 方法不支持在只读模式使用

获取sheet内所有行和列的cell

     # 以列的形式,获取sheet的全部cell
data = tuple(sheet.columns) # 以行的形式,获取sheet的全部cell
data = tuple(sheet.rows) # 获取所有数据
data = tuple(sheet.values)
# 指定返回某一行数据
print(data[2])

注意: sheet.rows 返回的是一个对象,需要用 tuple() 才能将对象转换成tuple

官方提醒:出于性能考虑, sheet.cloumns 方法不支持在只读模式使用

获取sheet的行数、列数

     # 获取sheet最大行
data = sheet.max_row # 获取sheet最多列
data = sheet.max_column # 获取sheet最小行
data = sheet.min_row # 获取sheet最小列
data = sheet.min_column

openpyxl写入数据

     workbook = openpyxl.load_workbook(path)
sheet = workbook.active
sheet.cell(row=2, col=2, value="")
workbook.save(filename=path)

包含知识点

  • 写入数据的文件需要是可写文件,需要已关闭;若打开着excel的话无法写入会报 PermissionError: [Errno 13] Permission denied: 'XXXXX.xlsx'
  • 其实就是四部曲:获取excel - 执行 workbook.active - 赋值操作 - 保存文件
  • 赋值操作还可以是  sheet["B2"] = "" ,等价于上面第三行代码
  • save() 会覆盖原有文件,不会有提醒

python接口自动化测试 - openpyxl基本使用的更多相关文章

  1. python接口自动化测试 - openpyxl封装类

    前言 为了更好的让openpyxl在工作中使用,将openpyxl的常用操作封装起来,这样不仅复用性高,而且阅读性好 直接上代码 #!/usr/bin/env python # -*- coding: ...

  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. [DevExpress]treeList1背景色设置与自定义图标

    为了和系统界面一致改成透明色: treeList1.BackColor = Color.Transparent; treeList1.Appearance.Empty.BackColor = Colo ...

  2. vue动态组件-根据数据展示特定组件

    vue中有个内置组件component,利用它可以实现动态组件,在某些业务场景下可以替换路由 假设有以下三个组件: com1.com2.com3 有一个外层路/coms中代码如下 <templa ...

  3. 0017 CSS 三大特性:层叠性、继承性、优先级

    目标: 理解 能说出css样式冲突采取的原则 能说出那些常见的样式会有继承 应用 能写出CSS优先级的算法 能会计算常见选择器的叠加值 5.1 CSS层叠性 概念: 所谓层叠性是指多种CSS样式的叠加 ...

  4. linux-iostat、sar、top、htop

    1.iostat 实时显示linux的任务 centos7中默认没有安装iostat,所以得提前安装sysstat yum install -y sysstat -c 统计cpu信息 -d 统计磁盘信 ...

  5. vue-router学习之二

    本文的学习来自技术胖大神的教程:https://jspang.com/ 这里的路由是指SPA(单页应用)的路径管理器.vue-router就是WebApp的链接路径管理系统. 为什么不能直接用< ...

  6. 小白学 Python 爬虫(32):异步请求库 AIOHTTP 基础入门

    人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前置准备(一)基本类库的安装 小白学 Python 爬虫(3):前置准备(二)Li ...

  7. 高校表白app用后感

    此款app前提是我们自行设计研发的app,其次满足了在校大学生对谈恋爱的需求,可以说是一款简单实用,好操作的软件.下面我根据自己的使用体验简单的介绍一下此软件: (1)首先对于未使用过的用户,你需要在 ...

  8. Markdown数学符号

    上标 语法: x^2 效果: \(x^2\) 下标 语法: x_i 效果: \(x_i\) 整体 语法: x^{2y} 效果: \(x^{2y}\) 大括号 语法: \{\} 效果: \(\{\}\) ...

  9. 「洛谷P1198」 [JSOI2008]最大数 解题报告

    P1198 [JSOI2008]最大数 题目描述 现在请求你维护一个数列,要求提供以下两种操作: 1. 查询操作. 语法:Q L 功能:查询当前数列中末尾L个数中的最大的数,并输出这个数的值. 限制: ...

  10. 入门gulp前端构建工具

    1. 全局安装 gulp:(倘若之前电脑安装过,则跳过此步骤) $ cnpm install -g gulp 2. 作为项目的开发依赖(devDependencies)安装: (此步骤会自动在目录下创 ...