自定义异常工具和异常捕获笔记

4 阅读1分钟

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)}")