接口自动化测试-使用openpyxl库读取xlsx测试用例数据【python+unittest+requests+openpyxl】

1.接口测试用例的excel文档格式如下: 

2. 读取xlsx的工具类,先安装并导入openpyxl 库(可以先写导入语句,接着按照pycharm提示导入即可),参数化只要表格中的【标题】、【请求体】、【预期状态码】、【预期结果】 数据,函数返回列表套元组格式的数据:[(标题,请求体,状态码,预期结果),(),...]

import json
import logging

from openpyxl import load_workbook


class ReadXlsxUtil(object):

    @classmethod
    def read_xlsx(cls, file_path, sheet_name):
        '''
        :param file_path: xlsx文件路径
        :param sheet_name: xlsx底部的工作表名称
        :return: [(),(),(),...]
        '''
        wb = load_workbook(file_path)
        sheet = wb.get_sheet_by_name(sheet_name)

        case_data = []
        i = 2
        while i <= sheet.max_row:
            # C表格中【标题】的列名,K表格中【请求参数】的列名,L表格中【状态码】的列名,M表格中【预期结果】的列名
            tuple_data = sheet[f'C{i}'].value, json.loads(sheet[f'K{i}'].value), sheet[f'L{i}'].value, json.loads(
                sheet[f'M{i}'].value)
            case_data.append(tuple_data)
            i += 1

        logging.info(case_data)

        return case_data

3. 测试类的参数化实现:导入工具类ReadXlsxUtil.py和参数化库parameterized,在测试方法上引入参数化,可以正常获取数据进行参数化。

import unittest
import config.path_cfg as cfg
from parameterized import parameterized

from common.read_xlsx_util import ReadXlsxUtil


class TestLogin(unittest.TestCase):
    @parameterized.expand(ReadXlsxUtil.read_xlsx(cfg.BASE_DIR + '/data/iHRM.xlsx', '登录'))
    def test_login(self, case_name, body, status_code, expect_data):
        
        # 可以打印看是否都获取正确
        print(f'case_name:{case_name}')
        print(f'body:{body}')
        print(f'status_code:{status_code}')
        print(f'expect_data:{expect_data}')

        # 接下来就是发送请求断言
        pass


本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>