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

前言

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

openpyxl简单介绍

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

openpyxl简单概念

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

openpyxl简单使用

 1 import openpyxl
 2
 3 if __name__ == ‘__main__‘:
 4     path = ‘F:/imocInterface/case/imooc.xlsx‘
 5     # 读取excel文件
 6     workbook = openpyxl.load_workbook(path)
 7     # 读取所有sheet
 8     sheet = workbook.get_sheet_names()
 9     # 获取某个sheet
10     sheet = workbook[sheet[0]]
11     # 获取某个cell的值
12     cell_val = sheet.cell(row=2, column=2).value
13     print(cell_val)

包含知识点

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

openpyxl操作单元格

访问单个cell

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

访问多个cell

 1     # A1-B3的单元格 共6个
 2     cell_range = sheet[‘A1‘:‘B3‘]
 3
 4     # A1-A3的单元格 共3个
 5     cell_range = sheet[‘A1:A3‘]
 6
 7     # 第十行的单元格
 8     cell_range = sheet[10]
 9
10     # 第1、2行的单元格
11     cell_range = sheet[1:2]

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

获取指定范围的cell

1     # 返回行
2     for col in sheet.iter_rows(min_row=1, min_col=1, max_col=3, max_row=2):
3         for cell in col:
4             print(cell)
5
6     # 返回列
7     for col in sheet.iter_cols(min_row=1, min_col=1, max_col=3, max_row=2):
8         for cell in col:
9             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

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

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

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

获取sheet的行数、列数

 1     # 获取sheet最大行
 2     data = sheet.max_row
 3
 4     # 获取sheet最多列
 5     data = sheet.max_column
 6
 7     # 获取sheet最小行
 8     data = sheet.min_row
 9
10     # 获取sheet最小列
11     data = sheet.min_column

openpyxl写入数据

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

包含知识点

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

原文地址:https://www.cnblogs.com/poloyy/p/12239344.html

时间: 2024-08-03 01:04:03

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

颠覆你的Python接口自动化测试,约吗?

课程 一直以来,我都很喜欢收集大家问的比较多的问题,然后一边回答一边整理成文.今天也不例外,只是由一问一答,变成了三问三答. [你问] 我们为什么要做接口测试? [我答] 之前在<测试路上你问我答>系列里写过一篇答疑,详见<接口测试的是什么和为什么?> [你问] Python 语言现在为什么这么火? [我答] 这个问题,其实我的回答未必全面,大家在简书或者任何一个技术论坛搜索一下,很多阐述.推荐下面这篇:Python 为何能坐稳 AI 时代头牌语言? [你问] 老师,我之前看了你写

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

第1章 课程介绍(不要错过)本章主要讲解课程的详细安排.课程学习要求.课程面向用户等,让大家很直观的对课程有整体认知! 第2章 接口测试工具Fiddler的运用本章重点讲解如何抓app\web的http\https请求包.如何模拟请求数据.过滤规则及修改响应数据.如何解决无法抓包问题        以及fiddler接口测试,让大家能应用好工具! 第3章 Requests常见方法实战运用本章重点讲解 get\post请求测试.接口测试中结果处理.上传\下载文件接口测试.请求中header及coo

python接口自动化测试

之前在项目中搞了一套jmeter +jenkins + git + ant接口自动化测试框架,在项目中运行了大半年了,效果还不错, 最近搞了一套requests + unittest + ddt +pymysql + BeautifulReport的接口自动化测试框架, 测试用例在yaml文件中, 支持数据驱动.连数据库查询. 目前框架还不是特别完善,需要在后续的使用中一步步优化,目前尚未使用jenkins做集成, 后续结合jenkins做成持续集成.接口自动化测试框架地址:https://gi

python接口自动化测试框架

环境:python3 + unittest + requests Excel管理测试用例, HTMLTestRunner生成测试报告 测试完成后邮件发送测试报告 jsonpath方式做预期结果数据处理,后期多样化处理 后期扩展,CI持续集成 发送邮件效果: 整体结构: common模块 class IsInstance: def get_instance(self, value, check): flag = None if isinstance(value, str): if check ==

基于Python接口自动化测试框架(初级篇)附源码

引言 很多人都知道,目前市场上很多自动化测试工具,比如:Jmeter,Postman,TestLink等,还有一些自动化测试平台,那为啥还要开发接口自动化测试框架呢?相同之处就不说了,先说一下工具的局限性: 1.测试数据不可控:    接口虽然是对业务逻辑.程序代码的测试,而实际上是对数据的测试,调用接口输入一批数据,通过断言代码验证接口返回的数据,整个过程围绕数据测试.    如果返回的数据不是固定的,是变化的,那么断言失败,就无法知道是接口程序错误引起的,还是数据变化引起的,所以就需要进行测

python 接口自动化测试--框架整改(五)

代码结构: 目标架构: 1.用例分析器,自动根据接口的参数,类型生成测试用例 2.数据分析器,自动维护接口参数数据,动态数据自动生成,返回结果自动查询判断 3.核心调用引擎,分SOAP和HTTP两种,调用用例,返回接口调用的结果 4.报告输出,统计用例通过率,错误日志,数据库持久化,持续集成 目前实现功能: 核心调用引擎,数据分析器(demo) 1.用例结构(更新) excel分两个sheet,sheet1中存放用例,结构如下 sheet2中存放测试环境host,接口wsdl地址,接口方法间的映

python接口自动化测试(一)--环境准备

python中http协议接口相关的库有urllib,urllib2以及reqeusts库,这其中reqeusts库用来起来最方便,因此我也主要采用requests库来做http协议的接口测试.首先来看下需要哪些环境信息: 一.安装python mac下自带安装了python,这个不多说了. 二.安装虚拟环境: 我们在一台机器上可以安装多个python版本,为了使每个版本的环境相互不受干扰,可以安装虚拟环境,安装方法如下: 1.安装virtualenv:pip install virtualen

python接口自动化测试(六)-unittest-单个用例管理

前面五节主要介绍了环境搭建和requests库的使用,可以使用这些进行接口请求的发送.但是如何管理接口案例?返回结果如何自动校验?这些内容光靠上面五节是不行的,因此从本节开始我们引入python单元测试框架 unittest,用它来处理批量用例管理,校验返回结果,初始化工作以及测试完成后的环境复原工作等等. 一.单个用例管理起来比较简单,参考如下图,单个用例一般多用在调试的时候: 二.代码如下: # -*- coding:utf-8 -*- # 单个用例执行 # 1.导入模块 import un

python接口自动化测试(八)-unittest-生成测试报告

用例的管理问题解决了后,接下来要考虑的就是报告我问题了,这里生成测试报告主要用到 HTMLTestRunner.py 这个模块,下面简单介绍一下如何使用: 一.下载HTMLTestRunner下载: 这个模块不能通过pip安装,只能下载安装,下载地址如下: python2.x版本:http://tungwaiyip.info/software/HTMLTestRunner.html python3.x版本:http://hzqldjb.blog.51cto.com/9587820/1590802