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
|