请求数据与断言数据参数化处理
# -*- coding:utf8 -*- import pytest import json import os from common.my_requests import MyRequests from common.my_excel import MyExcel from common.my_assert import MyAssert from common.mylogger import logger from common.handle_phone import get_new_phone from common.my_path import testdata_dir # 第一步:读取注册接口的测试数据 - 是个列表,列表中的每个成员,都是一个接口用例的数据。 excel_path = os.path.join(testdata_dir, "测试用例.xlsx") me = MyExcel(excel_path, "注册接口") cases = me.read_data() # 第二步:遍历测试数据,每一组数据,发起一个http的接口 # 实例化请求对象 mq = MyRequests() massert = MyAssert() class TestRegister: @pytest.mark.parametrize("case", cases) def test_regiser(self,case): logger.info("=========== 注册接口测试 ===============") new_phone = get_new_phone() # != -1:因为找到的结果都大于1,所以找不到就是返回-1 if case["req_data"] and case["req_data"].find('#phone#') != -1: # 替换掉占位符 - 请求数据和断言里面替换掉#phone#,替换成未注册手机号码 logger.info("新生成的手机号码是:{}".format(new_phone)) case["req_data"] = case["req_data"].replace('#phone#', new_phone) # 替换掉占位符 - 请求数据和断言里面替换掉#phone#,替换成未注册手机号码 if case["assert_list"] and case["assert_list"].find('#phone#') != -1: case["assert_list"] = case["assert_list"].replace('#phone#', new_phone) # 把json格式的字符串,转换成一个字典 req_dict = json.loads(case["req_data"]) resp = mq.send_requests(case["method"], case["url"], req_dict) # print(resp.json()) # 要断言 if case["assert_list"]: massert.assert_response_value(case["assert_list"], resp.json())