news 2026/4/16 19:04:57

接口自动化(四):logging 日志配置 + Allure 测试报告从安装到使用

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
接口自动化(四):logging 日志配置 + Allure 测试报告从安装到使用

一、logging⽇志模块

1.1介绍

logging模块核心概念

logging是 Python 标准库的日志工具,核心作用是记录程序运行信息(如调试信息、错误、运行状态),支持输出到控制台 / 文件 / 网络等,还能按日志级别过滤信息。

1. 日志级别(优先级从低到高)

日志级别决定了 “哪些信息会被记录”,规则是:仅记录 “级别≥设置级别” 的日志。级别对应关系:DEBUG < INFO < WARNING < ERROR < CRITICAL

2. 核心组件
  • Logger(日志记录器):程序中直接调用的 “日志对象”,负责产生日志。
  • Handler(处理器):决定日志输出的 “目标”(控制台 / 文件 / 邮件等),一个 Logger 可以绑定多个 Handler。
  • Formatter(格式器):定义日志的输出格式(如包含时间、级别、文件名等)。

1.2使⽤

示例 1:全局logging(快速入门)

效果:控制台会输出INFOWARNINGERRORCRITICAL级别的日志(DEBUG被过滤)。

示例 2:自定义 Logger 并输出到控制台

为什么只输出了WARNING+因为logging.basicConfig默认绑定的控制台 Handler 级别是WARNING(即使 Logger 级别是DEBUG,Handler 级别会二次过滤)。

→ 这是 “全局basicConfig” 的局限性,所以实际开发更推荐自定义 Handler(如示例 3)。

示例 3:自定义 Logger 并输出到日志文件

效果test.log文件中会保存所有 5 个级别的日志(因为 Handler 默认级别是NOTSET,会继承 Logger 的级别)。

示例 4:设置日志格式(更规范的日志)

格式说明%(xxx)s是占位符,会被实际信息替换):

  • %(asctime)s:日志产生的时间
  • %(levelname)s:日志级别(如 DEBUG/INFO)
  • %(name)s:Logger 的名称(即__name__
  • %(filename)s:日志所在的文件名
  • %(funcName)s:日志所在的函数名
  • %(lineno)d:日志所在的行号
  • %(message)s:日志内容

效果test.log中的日志会变成类似这样的规范格式:

2025-01-06 19:17:42,753 DEBUG [__main__] [test.py (<module>:13)] - This is a debug message
开发建议
  1. 优先用自定义 Logger+Handler,避免全局basicConfig的局限性;
  2. 一个 Logger 可以绑定多个 Handler(比如同时输出到控制台 + 文件);
  3. 给 Handler 单独设置级别(比如文件记录DEBUG,控制台只显示WARNING);
  4. Formatter规范日志格式,方便后续排查问题。

二、测试报告allure

官方文档:https://allurereport.org/docs/pytest-configuration

2.1介绍

AllureRepor由⼀个框架适配器和allure 命令⾏⼯具组成,是⼀个流⾏的开源⼯具,⽤于可视化测试运⾏的结果。它可以很少甚⾄零配置的⽅式添加到您的测试⼯作流中。它⽣成的报告可以在任 何地⽅打开,并且任何⼈都可以阅读,⽆需深厚的技术知识.

2.2安装

1.下载allure-pytest包
pip install allure-pytest==2.13.5
2.下载Windows版Allure报告

https://github.com/allure-framework/allure2/releases/download/2.30.0/allure-2.30.0.zip

2.1添加系统环境变量

将allure-2.30.0对应bin⽬录添加到系统环境变量中

2.2确认结果

打开cmd,查看allure版本,出现 allure 版本则安装成功。

若出现cmd中执⾏ allure --version 可以打印版本,但是pycharm控制台执⾏命令提示命题找不到,则需要修改pycharm中命令⾏环境,如下:

保存后需要重启pycharm!!! 检查pycharm中命令⾏是否可以使⽤allure命令

2.3使⽤

step1:运行自动化,生成测试结果文件(Allure 所需的原始数据)

目的是让 Pytest 执行用例时,把测试结果以 Allure 能识别的格式(JSON 文件)存到指定文件夹。

方式 1:命令行指定路径

执行 Pytest 时,通过--alluredir参数指定结果文件的存放路径:

pytest --alluredir=results_dir # results_dir是你要存结果的文件夹名

示例:

pytest --alluredir=allure-results # 项目下会自动生成allure-results文件夹,里面是测试结果的JSON文件

方式 2:在pytest.ini中配置(更便捷)

在项目根目录的pytest.ini文件里,预先配置--alluredir路径,后续执行 Pytest 时会自动生效:

# pytest.ini内容 addopts = -vs --alluredir allure-results

Step2:查看 Allure测试报告(两种方法)

Allure 需要基于allure-results里的原始数据,生成可视化的 HTML 报告,有两种常用方式:

方法 1:启动本地服务,实时查看报告(临时、方便调试)

通过allure serve命令启动一个本地 Web 服务,直接在浏览器打开报告(关闭服务后报告就没了)。

命令格式:

allure serve [选项] <allure-results路径>

常用选项:

  • --host <地址>:指定服务监听的主机(默认localhost)
  • --port <端口>:指定服务端口(默认自动选空闲端口)
  • --clean-alluredir:清除上次的测试结果,避免数据残留

示例:

# 不指定端口,用默认配置启动 allure serve ./allure-results # 指定端口(比如8787)启动 allure serve --port 8787 ./allure-results # 启动前先清除旧结果 allure serve ./allure-results --clean-alluredir

执行后会自动打开浏览器,显示 Allure 报告。

方法 2:生成静态 HTML 报告(可保存、分享)

通过allure generate命令,把allure-results的原始数据,生成静态 HTML 文件夹(可本地打开、或部署到服务器)。

命令格式:

allure generate [选项] <allure-results路径> -o <报告输出路径>

常用选项:

  • -o <路径>:指定最终报告的输出文件夹(必须加)
  • --clean:清除目标报告文件夹的旧内容(避免覆盖混乱)

示例:

执行后会生成allure-report文件夹(里面是 HTML、CSS 等静态文件),直接打开allure-report/index.html就能查看报告。

总结流程

  1. 执行自动化用例,生成allure-results结果文件:pytest --alluredir=allure-results(或用 pytest.ini 配置)
  2. 查看报告:
    • 临时调试:allure serve allure-results
    • 保存 / 分享:allure generate allure-results -o allure-report --clean

pytest 如何找用例解释:

pytest 如何找用例?

pytest 默认会自动扫描项目里符合 “测试规则” 的文件 / 函数 / 类,只要满足以下命名规则,就会被当作测试用例执行:

  • 文件:以test_开头(如test_login.py),或以_test.py结尾(如login_test.py);
  • 函数 / 方法:以test_开头(如def test_get_user_info():);
  • :以Test开头(如class TestOrder:),且类里的方法以test_开头。

Allure解释:

1. 两个 “Allure” 是什么?

组件名类型作用安装方式
allure-pytestPython 库(代码依赖)让 Pytest 能生成 Allure 识别的原始测试结果文件(就是allure-results里的 JSON)pip install allure-pytest
Allure 命令行工具独立程序(系统工具)allure-results的原始数据,生成可视化的 HTML 报告(对应allure serve/allure generate命令)下载压缩包(或 brew/apt 安装)

2. 为啥需要同时装这俩?

  • 只装allure-pytest:Pytest 能生成allure-results文件夹,但你没法把它变成可视化报告(因为没有allure serve/allure generate这些命令);
  • 只装 Allure 命令行工具:你有了生成报告的命令,但没有原始的测试结果数据(因为 Pytest 没装allure-pytest,不会生成allure-results)。

3. 举个 “协作流程” 的例子

  1. 你写了测试用例,装了allure-pytest
  2. 执行pytestallure-pytest帮你生成allure-results(原始 JSON 数据);
  3. 你装了 Allure 命令行工具,执行allure serve allure-results,这个工具读取allure-results的 JSON,生成可视化报告并在浏览器打开。

简单说:allure-pytest是 “生产数据的工人”,Allure 命令行工具是 “把数据做成报表的美工”,两者配合才能完成从 “跑用例” 到 “看报告” 的全流程

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 12:32:09

线下沙龙组织:邀请用户面对面交流使用心得体验

线下沙龙组织&#xff1a;邀请用户面对面交流使用心得体验 在AI语音技术正从实验室走向大众生活的今天&#xff0c;越来越多的开发者、内容创作者和普通用户开始关注“如何让机器说话更像人”。尤其是在播客制作、有声书生成、虚拟主播搭建等场景中&#xff0c;个性化、情感化的…

作者头像 李华
网站建设 2026/4/16 11:05:37

Java SpringBoot+Vue3+MyBatis 图书个性化推荐系统系统源码|前后端分离+MySQL数据库

摘要 随着信息技术的快速发展&#xff0c;个性化推荐系统在图书管理和阅读服务中发挥着越来越重要的作用。传统的图书推荐方式往往基于简单的分类或热门排序&#xff0c;难以满足用户多样化的阅读需求。个性化推荐系统通过分析用户的阅读历史、兴趣偏好和行为数据&#xff0c;能…

作者头像 李华
网站建设 2026/4/16 10:45:23

基于SpringBoot+Vue的图书个性化推荐系统管理系统设计与实现【Java+MySQL+MyBatis完整源码】

摘要 随着数字化阅读的普及&#xff0c;图书资源的快速增长使得用户面临信息过载的问题&#xff0c;传统的图书推荐方式难以满足用户的个性化需求。基于用户兴趣和行为数据的个性化推荐系统成为解决这一问题的有效途径。该系统通过分析用户的阅读历史、评分记录和搜索行为&…

作者头像 李华
网站建设 2026/4/16 10:40:52

赢麻了!软考空前大利好!恭喜所有程序员!

&#x1f50a;注意&#xff1a;2026软考生恭喜了&#xff01;让你一次上岸的机会来了&#xff01;「2026软考上岸学习群」正式开放&#xff01;25年软考已结束&#xff01;你是不是也踩了这些坑&#x1f62d;&#xff1a;❎考点又多又杂&#xff0c;复习毫无重点&#xff1b;❎…

作者头像 李华
网站建设 2026/4/16 14:27:52

无障碍辅助功能:帮助视障人士通过GLM-TTS听取文本

无障碍辅助功能&#xff1a;帮助视障人士通过GLM-TTS听取文本 在数字信息爆炸的时代&#xff0c;我们每天轻点屏幕就能浏览新闻、阅读书籍、查看通知。但对于全球超过2.85亿视障人士来说&#xff0c;这些“理所当然”却是一道难以逾越的鸿沟。尽管屏幕朗读器早已存在&#xff…

作者头像 李华
网站建设 2026/4/16 10:42:41

早鸟预售计划:提前锁定首批付费用户的营销策略

GLM-TTS&#xff1a;基于零样本克隆与精细化控制的高质量语音合成系统 在智能语音助手、有声内容创作和虚拟人交互日益普及的今天&#xff0c;用户对语音合成&#xff08;TTS&#xff09;系统的自然度、个性化和可控性提出了更高要求。传统TTS往往依赖大量训练数据、固定音色模…

作者头像 李华