📝 面试求职: 「面试试题小程序」 ,内容涵盖 测试基础、Linux操作系统、MySQL数据库、Web功能测试、接口测试、APPium移动端测试、Python知识、Selenium自动化测试相关、性能测试、性能测试、计算机网络知识、Jmeter、HR面试,命中率杠杠的。(大家刷起来…)
📝 职场经验干货:
在接口自动化测试中,异常处理和日志记录是确保测试稳定性和可维护性的关键环节。通过封装自定义异常和日志记录,可以更清晰地追踪问题,提高测试的可读性和可维护性。本文将详细介绍如何在接口自动化框架中封装自定义异常和日志记录,包括异常类的定义、日志记录器的封装以及在测试用例中的应用。
一、自定义异常类的定义
自定义异常类可以帮助我们更清晰地处理不同类型的错误,提高代码的可读性和可维护性。
(一)定义基础异常类
创建一个 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%免费】