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

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

前言


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

 

openpyxl简单介绍


  • 一个Python库,用于读取/写入Excel 2010  xlsxxlsmxltxxltm 文件
  • 不能操作 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() 会覆盖原有文件,不会有提醒

 

相关文章
|
1月前
|
数据可视化 前端开发 测试技术
接口测试新选择:Postman替代方案全解析
在软件开发中,接口测试工具至关重要。Postman长期占据主导地位,但随着国产工具的崛起,越来越多开发者转向更适合中国市场的替代方案——Apifox。它不仅支持中英文切换、完全免费不限人数,还具备强大的可视化操作、自动生成文档和API调试功能,极大简化了开发流程。
|
1月前
|
API Python
【02】优雅草央央逆向技术篇之逆向接口协议篇-以小红书为例-python逆向小红书将用户名转换获得为uid-优雅草央千澈
【02】优雅草央央逆向技术篇之逆向接口协议篇-以小红书为例-python逆向小红书将用户名转换获得为uid-优雅草央千澈
96 1
|
2月前
|
数据采集 存储 XML
Python爬虫:深入探索1688关键词接口获取之道
在数字化经济中,数据尤其在电商领域的价值日益凸显。1688作为中国领先的B2B平台,其关键词接口对商家至关重要。本文介绍如何通过Python爬虫技术,合法合规地获取1688关键词接口,助力商家洞察市场趋势,优化营销策略。
|
8天前
|
JSON 前端开发 测试技术
大前端之前端开发接口测试工具postman的使用方法-简单get接口请求测试的使用方法-简单教学一看就会-以实际例子来说明-优雅草卓伊凡
大前端之前端开发接口测试工具postman的使用方法-简单get接口请求测试的使用方法-简单教学一看就会-以实际例子来说明-优雅草卓伊凡
61 10
大前端之前端开发接口测试工具postman的使用方法-简单get接口请求测试的使用方法-简单教学一看就会-以实际例子来说明-优雅草卓伊凡
|
6天前
|
JSON 前端开发 API
以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
32 5
以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
|
11天前
|
API 文件存储 数据安全/隐私保护
python 群晖nas接口(一)
这段代码展示了如何通过群晖NAS的API获取认证信息(SID)并列出指定文件夹下的所有文件。首先,`get_sid()`函数通过用户名和密码登录NAS,获取会话ID(SID)。接着,`list_file(filePath, sid)`函数使用该SID访问FileStation API,列出给定路径`filePath`下的所有文件。注意需替换`yourip`、`username`和`password`为实际值。
53 18
|
9天前
|
API Python
python泛微e9接口开发
通过POST请求向指定IP的API注册设备以获取`secrit`和`spk`。请求需包含`appid`、`loginid`、`pwd`等头信息。响应中包含状态码、消息及`secrit`(注意拼写)、`secret`和`spk`字段。示例代码使用`curl`命令发送请求,成功后返回相关信息。
30 5
|
9天前
|
API 文件存储 Python
python 群晖nas接口(二)
这段代码展示了如何通过API将文件上传到群晖NAS。它使用`requests`库发送POST请求,指定文件路径、创建父级目录及覆盖同名文件的参数,并打印上传结果。确保替换`yourip`和`sid`为实际值。
29 2
|
2月前
|
IDE 测试技术 开发工具
10个必备Python调试技巧:从pdb到单元测试的开发效率提升指南
在Python开发中,调试是提升效率的关键技能。本文总结了10个实用的调试方法,涵盖内置调试器pdb、breakpoint()函数、断言机制、logging模块、列表推导式优化、IPython调试、警告机制、IDE调试工具、inspect模块和单元测试框架的应用。通过这些技巧,开发者可以更高效地定位和解决问题,提高代码质量。
337 8
10个必备Python调试技巧:从pdb到单元测试的开发效率提升指南
|
1月前
|
存储 测试技术 API
pytest接口自动化测试框架搭建
通过上述步骤,我们成功搭建了一个基于 `pytest`的接口自动化测试框架。这个框架具备良好的扩展性和可维护性,能够高效地管理和执行API测试。通过封装HTTP请求逻辑、使用 `conftest.py`定义共享资源和前置条件,并利用 `pytest.ini`进行配置管理,可以大幅提高测试的自动化程度和执行效率。希望本文能为您的测试工作提供实用的指导和帮助。
116 15