写点什么

软件测试 / 测试开发丨 Pytest 结合数据驱动 -Excel

作者:测试人
  • 2023-06-16
    北京
  • 本文字数:861 字

    阅读完需:约 3 分钟

点此获取更多相关资料

本文为霍格沃兹测试开发学社学员学习笔记分享

原文链接:https://ceshiren.com/t/topic/24706

Pytest 结合数据驱动 Excel

读取 Excel 文件

  • 第三方库 xlrdxlwingspandas

  • openpyxl 官方文档: https://openpyxl.readthedocs.io/en/stable/

openpyxl 库的安装

  • 安装:pip install openpyxl

  • 导入:import openpyxl

openpyxl 库的操作

  • 读取工作簿

  • 读取工作表

  • 读取单元格

import openpyxl
# 获取工作簿book = openpyxl.load_workbook('../data/params.xlsx')
# 读取工作表sheet = book.active
# 读取单个单元格cell_a1 = sheet['A1']cell_a3 = sheet.cell(column=1, row=3) # A3
# 读取多个连续单元格cells = sheet["A1":"C3"]
# 获取单元格的值cell_a1.value
复制代码



工程目录结构

  • data 目录:存放 excel 数据文件

  • func 目录:存放被测函数文件

  • testcase 目录:存放测试用例文件

# 工程目录结构.├── data│   └── params.excel├── func│   ├── __init__.py│   └── operation.py└── testcase    ├── __init__.py    └── test_add.py
复制代码

测试准备

  • 被测对象:operation.py

  • 测试用例:test_add.py

# operation.py 文件内容def my_add(x, y):    result = x + y    return result
# test_add.py 文件内容class TestWithEXCEL: @pytest.mark.parametrize('x,y,expected', get_excel()) def test_add(self, x, y, expected): assert my_add(int(x), int(y)) == int(expected)
复制代码

测试准备

  • 测试数据:params.xlsx


Pytest 数据驱动结合 Excel 文件

# 读取Excel文件import openpyxlimport pytest
def get_excel(): # 获取工作簿 book = openpyxl.load_workbook('../data/params.xlsx')
# 获取活动行(非空白的) sheet = book.active
# 提取数据,格式:[[1, 2, 3], [3, 6, 9], [100, 200, 300]] values = [] for row in sheet: line = [] for cell in row: line.append(cell.value) values.append(line) return values
复制代码



点此获取更多相关资料

发布于: 刚刚阅读数: 6
用户头像

测试人

关注

专注于软件测试开发 2022-08-29 加入

霍格沃兹测试开发学社,测试人社区:https://ceshiren.com/t/topic/22284

评论

发布
暂无评论
软件测试/测试开发丨Pytest结合数据驱动-Excel_程序员_测试人_InfoQ写作社区