本文共 3291 字,大约阅读时间需要 10 分钟。
在软件开发过程中,日志记录是确保程序稳定运行和定位问题的重要工具。作为一名开发人员或测试工程师,你可能经常面临日志记录的选择问题。Loguru作为一款受欢迎的Python日志库,以其简洁的API和强大的自动化功能,成为开发者和测试工程师的首选工具。本文将深入探讨loguru的优势,以及如何在接口自动化测试项目中有效使用它,并结合Allure生成详细的测试报告。
在软件开发项目中,日志记录具有以下重要作用:
Loguru凭借其独特的优势,成为开发者和测试工程师的日志记录首选工具:
以下是使用loguru的示例,展示了如何创建日志记录器并配置其行为:
from loguru import loggerimport os# 创建日志目录log_dir = "logs"os.makedirs(log_dir, exist_ok=True)# 配置loggerlogger.add( f"{log_dir}/app.log", rotation="1 week", # 日志轮转周期 compression="zip", # 轮转文件压缩 level="DEBUG", # 最低日志级别 format="{time:YYYY-MM-DD at HH:mm:ss} - {level} - {message}")class CustomLogger: def log_info(self, message): logger.info(message) def log_error(self, message): logger.error(message)# 创建封装的日志记录器logger = CustomLogger()# 使用封装的loggerlogger.log_info("这是一个信息级别的日志消息")
format
参数定义日志输出格式,支持时间、级别、消息等字段。Loguru提供了灵活的日志旋转策略:
rotation
参数设置日志文件的最大大小或时间间隔。retention
参数设置旧日志文件的保留时间,可以是具体的时间长度或自定义函数。compression
参数设置日志文件旋转后的压缩格式。from loguru import logger# 综合使用日志旋转、保留和压缩策略logger.add( "logs/my_app.log", rotation="1 week 100 MB", # 每周或文件达到100MB时旋转 retention="30 days", # 保留30天的日志 compression="tar.gz" # 使用tar.gz格式压缩旧日志文件)# 记录日志信息logger.info("这是一个信息级别的日志消息")
在自动化测试项目中,记录日志可以帮助你更好地理解测试过程和结果:
def test_api_endpoint(): try: logger.log_info("正在测试API端点") # 执行API调用逻辑 response = requests.get("http://api.example.com/data") # assertions assert response.status_code == 200 logger.log_info("成功接收到API响应") except AssertionError as e: # 测试失败时记录详细信息 logger.log_error(f"测试失败,HTTP状态码: {response.status_code}") raise e except Exception as e: # 处理其他异常 logger.log_error(f"意外发生,原因: {e}") raise e finally: logger.log_info("API测试用例完成")
Allure是一款功能强大的自动化测试报告工具,与Loguru结合使用,可以生成详细的测试报告:
from allure import AllureReportimport requests@AllureReport(test_case_name="API Endpoint Test")def test_api_with_allure(): try: logger.log_info("开始测试API端点") # 执行API调用逻辑 response = requests.get("http://api.example.com/data") # assertions assert response.status_code == 200 logger.log_info("成功接收到API响应") except AssertionError as e: # 测试失败时记录详细信息 allure.attach.body(str(response.content), name="Response Content", type="text") logger.log_error("所有ureattached response content on failure.") raise e except Exception as e: # 处理其他异常 allure.attach.body(str(e), name="Error Details", type="text") logger.log_error("所有ureattached error details on exception.") raise e finally: logger.log_info("API测试用例完成")
Loguru以其简洁的API和强大的自动化功能,使得日志记录过程更加高效和可靠。在自动化测试项目中,与Allure结合使用,可以生成丰富的测试报告,提供详细的错误定位信息和可追踪性。这对于提高测试质量和项目维护能力具有重要意义。
转载地址:http://cjufk.baihongyu.com/