pytest结合数据驱动读取excel文件

pytest结合数据驱动读取Excel文件

  • 第三方库
    xlrd
    xlwings
    pandas

  • 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']        # 读取第A列,第1行的单元格中数据
cell_a3 = sheet.cell(column=1,row=3) #A3, 第A列,第3行的单元格中数据

# 读取多个连续单元格
cells = sheet["A1":"C3"]   #  读取从第A列,第1行的单元格起,至第C列,第3行的单元格止范围中数据

# 获取单元格的值
cell_a1.value
  • Pytest 数据驱动结合 Excel 文件
#测试my_add方法的测试用例
import openpyxl
import pytest

from func.operation import my_add

# 用到excel文件中的数据时,就需要读取出来
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

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)