1,自定义异常工具类 ………………………………
from auto_test.utils.log_utils import log_error
# 1. 请求异常:网络错误、超时、连接失败
class RequestException(Exception):
def __init__(self, msg):
self.msg = msg
log_error(f"【请求异常】{msg}")
super().__init__(self.msg)
# 2. 数据异常:YAML数据错了、参数缺失、格式不对
class DataException(Exception):
def __init__(self, msg):
self.msg = msg
log_error(f"【数据异常】{msg}")
super().__init__(self.msg)
# 3. 断言异常/业务异常:接口返回不符合预期
class AssertException(Exception):
def __init__(self, msg):
self.msg = msg
log_error(f"【断言异常】{msg}")
super().__init__(self.msg)
2,异常调用………………………………
import requests
from auto_test.config.Env import Env
from auto_test.utils.allure_utils import attach_request,attach_response
from auto_test.utils.log_utils import log_info,log_debug,log_warning,log_error
from auto_test.utils.request_exception import RequestException
def get(self, path, params=None, **kwargs):
url = Env.base_url() + path
try:
# ===== 写入请求到报告 =====
log_info(f"发起请求:{url}")
attach_request(url, "GET", self.session.headers, params=params)
resp = self.session.get(url, params=params, **kwargs)
# ===== 写入响应到报告 =====
attach_response(resp)
log_info(f"请求成功,返回状态码:{resp.status_code}")
return resp
except Exception as e:
log_error(f"请求是失败:{str(e)}")
raise RequestException(f"GET请求失败{str(e)}")
def post(self, path, json=None, **kwargs):
url = Env.base_url() + path
# ===== 写入请求到报告 =====
try:
log_info(f"发起请求:{url}")
attach_request(url, "POST", self.session.headers, json=json)
resp = self.session.post(url, json=json, **kwargs)
# ===== 写入响应到报告 =====
attach_response(resp)
log_info(f"请求成功,返回状态码:{resp.status_code}")
return resp
except Exception as e:
log_error(f"请求是失败:{str(e)}")
raise RequestException(f"POST请求失败{str(e)}")
……………………………………………………………………………………………………………………
def readyaml():
try:
with open("../date/d.yaml", 'r') as f:
data = yaml.safe_load(f)
print(data)
except Exception as e:
raise DataException(f"读取YAML失败:{str(e)}")