请求数据与断言数据参数化处理

# -*- 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())

 

posted @ 2022-01-06 21:25  乘风破浪的小落夜  阅读(75)  评论(0编辑  收藏  举报