pytest参数化--读取Excel数据

这篇博客介绍了如何利用Python的xlrd库封装读取xls文件的工具,并结合pytest进行参数化测试。首先,创建了XlrdUtils.py模块,封装了read_test_data函数,该函数能灵活地读取单个或多个sheet页的数据。然后,通过RD_By类提供索引方式,方便获取所需测试用例的特定值。最后,展示了如何在pytest中使用这些工具进行参数化测试。
摘要由CSDN通过智能技术生成

一、使用xlrd库,封装常用读取xls的操作

模块:XlrdUtils.py

# -*- coding:utf-8 -*-

import xlrd

class XlrdUtils(object):

    def __init__(self,filename):
        self.workbook = xlrd.open_workbook(filename, formatting_info=True)

    def get_cell_value(self, sheet_index_or_name, row_index, col_index):
        sheet = self.__get_sheet(sheet_index_or_name)
        if sheet.nrows and sheet.ncols:
            return sheet.cell_value(row_index, col_index)
        else:
            raise BaseException("Index out of range!")

    def __get_sheet(self, sheet_index_or_name):
        """
        根据sheet的索引或名称,获取sheet对象
        :param sheet_index_or_name: sheet的索引或名称
        :return:sheet对象
        """
        if isinstance(sheet_index_or_name, int):
            if len(self.workbook.sheet_names()) > sheet_index_or_name:
                return self.workbook.sheet_by_index(sheet_index_or_name)
            else:
                raise BaseException("Invalid Sheet Index!")
        elif isinstance(sheet_index_or_name, str):
            if sheet_index_or_name in self.workbook.sheet_names():
                return self.workbook.sheet_by_name(sheet_index_or_name)
            else:
                raise BaseException("Invalid Sheet Name!")
    def get_rows_num(self,sheet_index_or_name):
        return self.__get_sheet(sheet_index_or_name).nrows

    def get_cols_num(self,sheet_index_or_name):
        return self.__get_sheet(sheet_index_or_name).ncols

    def get_sheet_names(self):
        return self.workbook.sheet_names()

    def items_value(self, sheet_index_or_name
pytest参数化pytest框架提供的一种功能,它允许我们通过在测试函数上使用装饰器来定义参数化测试。参数化测试可以帮助我们简化测试代码,减少重复的测试逻辑,并且可以方便地使用不同的测试数据进行多次测试。 在pytest参数化中,我们可以使用多种方式来定义测试数据,其中一种方式就是使用Excel文件。通过将测试数据存储在Excel文件中,我们可以方便地对测试数据进行管理和维护。 要在pytest中使用Excel文件进行参数化,我们可以使用第三方库如`openpyxl`或`pandas`来读取Excel文件,并将读取到的数据传递给测试函数。具体步骤如下: 1. 安装所需的库:在使用Excel文件进行参数化之前,需要先安装`openpyxl`或`pandas`库。可以使用pip命令进行安装,例如:`pip install openpyxl`。 2. 创建Excel文件:在Excel文件中,可以创建一个或多个工作表,每个工作表代表一个参数化的测试场景。在工作表中,可以定义不同的列来表示不同的参数。 3. 读取Excel文件:使用`openpyxl`或`pandas`库中的相应函数来读取Excel文件,并获取到需要的测试数据。 4. 参数化测试函数:使用pytest的装饰器`@pytest.mark.parametrize`来标记测试函数,并将读取到的测试数据作为参数传递给测试函数。 下面是一个示例代码,演示了如何使用Excel文件进行参数化: ```python import pytest import openpyxl def read_excel_data(file_path, sheet_name): workbook = openpyxl.load_workbook(file_path) sheet = workbook[sheet_name] data = [] for row in sheet.iter_rows(min_row=2, values_only=True): data.append(row) return data @pytest.mark.parametrize("name, age", read_excel_data("testdata.xlsx", "Sheet1")) def test_user_info(name, age): # 测试逻辑 assert isinstance(name, str) assert isinstance(age, int) ``` 在上述示例中,`read_excel_data`函数用于读取Excel文件中的测试数据。`@pytest.mark.parametrize`装饰器将读取到的测试数据作为参数传递给`test_user_info`测试函数。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值