接口自动化框架篇: 自定义异常日志封装

📝 面试求职: 「面试试题小程序」 ,内容涵盖 测试基础、Linux操作系统、MySQL数据库、Web功能测试、接口测试、APPium移动端测试、Python知识、Selenium自动化测试相关、性能测试、性能测试、计算机网络知识、Jmeter、HR面试,命中率杠杠的。(大家刷起来…)

📝 职场经验干货:

软件测试工程师简历上如何编写个人信息(一周8个面试)

软件测试工程师简历上如何编写专业技能(一周8个面试)

软件测试工程师简历上如何编写项目经验(一周8个面试)

软件测试工程师简历上如何编写个人荣誉(一周8个面试)

软件测试行情分享(这些都不了解就别贸然冲了.)

软件测试面试重点,搞清楚这些轻松拿到年薪30W+

软件测试面试刷题小程序免费使用(永久使用)


在接口自动化测试中,异常处理和日志记录是确保测试稳定性和可维护性的关键环节。通过封装自定义异常和日志记录,可以更清晰地追踪问题,提高测试的可读性和可维护性。本文将详细介绍如何在接口自动化框架中封装自定义异常和日志记录,包括异常类的定义、日志记录器的封装以及在测试用例中的应用。

一、自定义异常类的定义

自定义异常类可以帮助我们更清晰地处理不同类型的错误,提高代码的可读性和可维护性。

(一)定义基础异常类

创建一个 exceptions.py 文件,定义基础异常类。

class APIException(Exception):

    """基础异常类"""

    pass

(二)定义具体的异常类

在 exceptions.py 文件中,定义具体的异常类,用于处理不同的错误场景。

class APIRequestException(APIException):

    """请求异常"""

    pass

class APIResponseException(APIException):

    """响应异常"""

    pass

class APIDataException(APIException):

    """数据异常"""

    pass‍

二、日志记录器的封装

日志记录是追踪测试过程和问题的关键工具。通过封装日志记录器,可以更灵活地控制日志的输出格式和存储位置。

(一)安装 Loguru

安装 Loguru 库,用于简化日志记录。

pip install loguru

(二)封装日志记录器

创建一个 logger.py 文件,封装日志记录器。

from loguru import logger

class Logger:

    @staticmethod

    def setup_logging(log_file="logs/log_{time}.log"):

        """设置日志记录器"""

        logger.add(log_file, rotation="100 MB", compression="zip")

        return logger

# 初始化日志记录器

logger = Logger.setup_logging()‍

三、在测试用例中使用自定义异常和日志记录

(一)封装请求方法

在 request_util.py 文件中,封装请求方法,并在请求失败时抛出自定义异常。

import requests

from exceptions import APIRequestException, APIResponseException

from logger import logger

class RequestUtil:

    def __init__(self, base_url):

        self.base_url = base_url

    def get(self, endpoint, params=None, headers=None):

        url = f"{self.base_url}{endpoint}"

        try:

            logger.info(f"Sending GET request to {url}")

            response = requests.get(url, params=params, headers=headers)

            response.raise_for_status()  # 检查状态码是否为 200

            logger.info(f"Response status code: {response.status_code}")

            logger.info(f"Response content: {response.text}")

            return response

        except requests.exceptions.RequestException as e:

            logger.error(f"Request failed: {e}")

            raise APIRequestException(f"Request failed: {e}")

    def post(self, endpoint, data=None, json=None, headers=None):

        url = f"{self.base_url}{endpoint}"

        try:

            logger.info(f"Sending POST request to {url}")

            response = requests.post(url, data=data, json=json, headers=headers)

            response.raise_for_status()

            logger.info(f"Response status code: {response.status_code}")

            logger.info(f"Response content: {response.text}")

            return response

        except requests.exceptions.RequestException as e:

            logger.error(f"Request failed: {e}")

            raise APIRequestException(f"Request failed: {e}")

    # 其他请求方法类似

(二)在测试用例中使用封装的请求方法和日志记录

创建一个 test_api.py 文件,编写测试用例。

import pytest

from request_util import RequestUtil

@pytest.fixture

def api():

    return RequestUtil("https://api.example.com")

def test_get_user_info(api):

    try:

        response = api.get("/users/123")

        assert response.status_code == 200

        assert response.json()["name"] == "John Doe"

    except APIRequestException as e:

        logger.error(f"Test failed: {e}")

        pytest.fail(f"Test failed: {e}")

def test_create_user(api):

    try:

        user_data = {"name": "John Doe", "email": "john.doe@example.com"}

        response = api.post("/users", json=user_data)

        assert response.status_code == 201

        assert response.json()["name"] == "John Doe"

    except APIRequestException as e:

        logger.error(f"Test failed: {e}")

        pytest.fail(f"Test failed: {e}")‍

四、总结

通过封装自定义异常和日志记录器,可以显著提高接口自动化测试的稳定性和可维护性。自定义异常类可以帮助我们更清晰地处理不同类型的错误,而日志记录器可以提供详细的测试过程信息,便于问题追踪和调试。希望本文能够对读者在接口自动化框架中实现自定义异常和日志记录封装提供帮助。

最后: 下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取【保证100%免费】

​​

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值