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