mirror of https://gitee.com/a529548204/apitest.git
72 lines
3.2 KiB
Python
72 lines
3.2 KiB
Python
# coding:utf-8
|
|
"""
|
|
@author: jing
|
|
@contact: 529548204@qq.com
|
|
@file: requestsTearDown.py
|
|
@time: 2022/5/11 13:28
|
|
"""
|
|
import logging
|
|
|
|
from common.basePage import apisend
|
|
from util.tools.iniHeaders import iniheaders
|
|
from util.tools.datasTypeChange import strHandleUrl, valueHandle
|
|
from util.tools.log import Log
|
|
import jsonpath
|
|
import allure
|
|
|
|
Log()
|
|
|
|
|
|
def caseTearDown(alldata, casedata, caseres, headerdata=None):
|
|
"""
|
|
使用场景: 新增数据A之后一系列用例执行完需要后置来还原数据形成业务闭环.
|
|
datatype 有3种类型 param json 和urlparam
|
|
dataname为后置关联的参数中参数名称
|
|
path为当前请求返回结果的jsonpath 根据path的值更换后置处理参数值
|
|
如果不需要后置处理 teardown 置空即可
|
|
:param alldata: 全部数据
|
|
:param casedata: 测试数据
|
|
:param caseres: 当前用例返回结果
|
|
:param headerdata: 请求头数据
|
|
:return:
|
|
"""
|
|
teardowndata = casedata["teardown"]
|
|
if teardowndata:
|
|
for req in teardowndata:
|
|
tdcase = alldata[req["tdName"]]["case"][req["tdNum"] - 1]
|
|
try:
|
|
with allure.step("执行后置接口"):
|
|
if alldata[req["tdName"]]["token"]:
|
|
# 处理请求头
|
|
tdcase["headers"] = iniheaders(tdcase["headers"])
|
|
tdcase["headers"][alldata[req["tdName"]]["token"]] = headerdata
|
|
for tddata in req["tddata"]:
|
|
# 循环处理后置请求参数
|
|
value = jsonpath.jsonpath(caseres, tddata["path"])[0]
|
|
if tddata["datatype"] == "param":
|
|
# 后置参数为param类型时
|
|
middata = valueHandle(tdcase["data"]["param"])
|
|
# 为了方便处理 转化为字典 然后更换值之后再转化为param字符串
|
|
middata[tddata['dataname']] = value
|
|
tdcase["data"]["param"] = strHandleUrl(middata)
|
|
elif tddata["datatype"] == "json":
|
|
# 后置参数为json类型时
|
|
if not isinstance(tdcase["data"]["param"],dict):
|
|
raise TypeError("['data']['param']格式错误")
|
|
tdcase["data"]["param"][tddata['dataname']] = value
|
|
elif tddata["datatype"] == "urlparam":
|
|
# 后置参数为url路径类型时
|
|
tdcase["data"]["urlparam"] = {
|
|
tddata['dataname']: value
|
|
}
|
|
# 执行后置请求
|
|
apisend(address=tdcase["address"],
|
|
method=tdcase["method"], headers=tdcase["headers"],
|
|
data=tdcase["data"],
|
|
caches=tdcase["cache"], host=tdcase["host"])
|
|
logging.info(f"成功执行后置接口:{tdcase['info']}")
|
|
|
|
except Exception as e:
|
|
logging.error(f"执行后置接口:{tdcase['info']}错误,{e}")
|
|
raise
|