0x01 接口自动化测试-处理excel中用例数据的工具类

为了读取用例数据方便,封装了一个工具类。目前用例数据使用excel文档保存,工具类使用openpyxl三方库,对读取、写入数据的方法进行了再次封装。

以下是V1版本,主要功能是读取和写入数据,没有做异常处理,默认能正确使用类中的方法。会在后续完善。

# -*- coding:UTF-8 -*-
# @author  : Joker
# @Time    : 2019/12/24
# @IDE     : PyCharm
# @Version : Python 3.7
"""
读取EXCEL文件中的用例数据
"""
import os
import openpyxl


class CaseData:
    """使用类属性存放测试用例数据"""
    pass


class Readexcel:
    """读取EXCEL文件"""

    def __init__(self, filename, sheetname):
        self.filename = filename
        self.sheetname = sheetname

    def open(self):
        self.wb = openpyxl.load_workbook(self.filename)
        self.sh = self.wb[self.sheetname]

    def close(self):
        self.wb.close()

    def save(self):
        self.wb.save(self.filename)

    def get_data(self):
        """输出字典格式的测试用例数据列表"""
        self.open()
        max_row = self.sh.max_row
        max_column = self.sh.max_column

        data_list = []
        for row in range(1, max_row + 1):
            data = []
            for column in range(1, max_column + 1):
                value = self.sh.cell(row=row, column=column).value
                data.append(value)
            data_list.append(data)

        cases = []
        title = data_list[0]
        for data in data_list[1:]:
            case = dict(zip(title, data))
            cases.append(case)

        self.close()
        return cases

    def get_obj_data(self):
        """输出类属性格式的测试用例数据列表"""
        cases_obj = []
        cases = self.get_data()

        for case in cases:
            data = CaseData()
            for key, value in case.items():
                setattr(data, key, value)
            cases_obj.append(data)

        self.close()
        return cases_obj

    def write_data(self, row, column, value):
        """写入数据到EXCEL"""
        self.open()
        self.sh.cell(row=row, column=column, value=value)
        self.save()
        self.close()


if __name__ == "__main__":
    filename = os.path.join(DATA_DIR, "apicases.xlsx")
    cases = Readexcel(filename, "login")
    data = cases.get_data()
    print(data)

提供了两种保存用例数据的方法,一种是把读取到的用例数据保存到字典中get_data(),另一种是把读取到的用例数据保存到类属性中get_obj_data(),配合改造的HTMLTestRunner库一起使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值