当前位置: 首页 > news >正文

【GUI自动化测试】Python logging 日志模块与 Allure 测试报告实战指南

请添加图片描述

文章目录

  • 一、logging⽇志模块
    • 1.1 介绍
    • 1.2 三种使⽤
  • 二、 测试报告allure
    • 2.1 介绍
    • 2.2 安装与测试使用
  • 🚩总结


一、logging⽇志模块

1.1 介绍

logging是Python标准库中的一个模块,它提供了灵活的日志记录功能。通过logging,开发者可以方便地将日志信息输出到控制台、文件、网络等多种目标,同时支持不同级别的日志记录,以满足不同场景下的需求。

1.2 三种使⽤

⽰例1:全局logging

import logging
logging.basicConfig(level=logging.INFO)logging.debug("This is a debug message")
logging.info("This is an info message")
logging.warning("This is a warning message")
logging.error("This is a error message")
logging.critical("This is a critical message")

⽰例2:⾃定义logger并输出到控制台

import logging
import pytest# 1. 日志基础配置
logging.basicConfig(level=logging.INFO,format="%(asctime)s - %(name)s - %(levelname)s - %(message)s"
)
logger = logging.getLogger(__name__)
logger.setLevel(logging.DEBUG)# 2. pytest 测试用例
def test_log_output(caplog):# 执行日志输出logger.debug("This is a debug message")  # DEBUG 不输出(被 handler 过滤)logger.info("This is an info message")   # INFO 输出logger.warning("This is a warning message")  # WARNING 输出logger.error("This is a error message")      # ERROR 输出logger.critical("This is a critical message")# CRITICAL 输出# 手动打印捕获的日志(关键:让控制台显示日志)print("\n捕获的日志内容:")print(caplog.text)# (可选)添加断言验证日志是否正确输出assert "This is an info message" in caplog.textassert "This is a critical message" in caplog.textassert "This is a debug message" not in caplog.text  # DEBUG 错误, 断言不通过

在这里插入图片描述

import logging  # 导入Python内置的日志模块(核心,用于日志记录)# 1. 基础配置:设置日志输出到控制台,且只输出「INFO级别及以上」的日志
logging.basicConfig(level=logging.INFO,  # 日志级别门槛(低于INFO的DEBUG不输出)format="%(asctime)s - %(name)s - %(levelname)s - %(message)s"  # 自定义日志格式(可选,默认格式较简单)
)# 2. 获取「自定义日志记录器(logger)」
# __name__ 表示“当前模块名”(比如文件叫test_log.py,name就是test_log)
# 用模块名作为logger名称,方便后续区分不同模块的日志(比用默认的“根logger”更灵活)
logger = logging.getLogger(__name__)# 3. 设置自定义logger的级别为DEBUG(比基础配置的INFO更低)
# 注意:日志要输出,需同时满足「logger级别 ≤ 日志级别」和「handler级别 ≤ 日志级别」
# 这里basicConfig默认创建的handler级别是INFO,所以即使logger设为DEBUG,DEBUG日志仍不会输出(后面会解释)
logger.setLevel(logging.DEBUG)if __name__ == "__main__":# 4. 用「自定义logger」输出不同级别的日志(关键:用logger.xxx,不是logging.xxx)logger.debug("This is a debug message")  # DEBUG级别(低于handler的INFO,不输出)logger.info("This is an info message")   # INFO级别(满足门槛,输出)logger.warning("This is a warning message")  # WARNING(输出)logger.error("This is a error message")      # ERROR(输出)logger.critical("This is a critical message")# CRITICAL(输出)
import yaml#追加写入
def write_yaml(filename, data):with open(filename, encoding="utf-8",mode="a+") as f :yaml.safe_dump(data, stream=f)#读取
def read_yaml(filename, key):with open(filename, encoding="utf-8", mode="r") as f:data = yaml.safe_load(f)return data[key]#清空
def clear_yaml(filename):with open(filename, encoding="utf-8", mode="w") as f:f.truncate()def test_yaml():#写入yaml 文件data = {"str": "12345"}write_yaml("test.yaml", data)#读取yaml文件ret = read_yaml("test.yaml", "str")print("ret", ret)#清空yaml文件# clear_yaml("test.yaml")

在这里插入图片描述

  • 获取日志记录器:logging.getLogger(name)获取一个日志记录器对象,name是当前模块的名称。使用模块名称作为日志记录器的名称有助于在大型项目中区分不同模块的日志.
  • 设置日志级别:logger.setLevel(logging.DEBUG)将日志记录器的级别设置为DEBUG ,这意味着所有DEBUG及以上级别的日志都会被记录.

日志级别金字塔:DEBUG<INFO<WARNING<ERROR<CRITICAL
高于设定级别的日志才会被处理

  • 创建文件处理器:logging.FileHandler(filename=“test.log”)创建一个文件处理器,将日志信息写入到名为test.log的文件中.
  • 添加处理器:logger.addHandler(handler)将文件处理器添加到日志记录器中,这样日志记录器就会使用这个处理器来处理日志信息.

⽰例4:设置⽇志格式

import logging
import os# 获取日志记录器
logger = logging.getLogger(__name__)
logger.setLevel(logging.DEBUG)  # 记录器级别:DEBUG及以上都记录# 创建文件处理器(负责把日志写入test.log)
handler = logging.FileHandler(filename="test.log", encoding="utf-8")  # 加encoding避免中文乱码
handler.setLevel(logging.DEBUG)  # 处理器级别:输出DEBUG及以上日志到文件# | 格式占位符   | 说明                                                         |
# | ------------ | ------------------------------------------------------------ |
# | `%(asctime)s` | 日志记录的时间戳,通常显示为日期和时间。|
# | `%(levelname)s` | 日志级别(如 DEBUG、INFO、WARNING、ERROR、CRITICAL)。 |
# | `%(name)s`    | 日志记录器的名称,通常为模块名称。|
# | `%(filename)s` | 日志记录发生的文件名。|
# | `%(funcName)s` | 日志记录发生的函数名。|
# | `%(lineno)d`  | 日志记录发生的行号。|
# | `%(message)s` | 日志消息本身。|# 创建格式器(定义日志的显示格式)
formatter = logging.Formatter("%(asctime)s %(levelname)s [%(name)s] [%(filename)s (%(funcName)s:%(lineno)d)] - %(message)s"
)
handler.setFormatter(formatter)  # 给处理器绑定格式# 把处理器添加到记录器
logger.addHandler(handler)def test_log_write():logger.debug("This is a debug message")logger.info("This is an info message")logger.warning("This is a warning message")logger.error("This is a error message")logger.critical("This is a critical message")assert os.path.exists("test.log"), "日志文件未生成"if __name__ == "__main__":test_log_write()

在这里插入图片描述

logging.Formatter是用于定义日志输出格式的类。在构造函数中,传递了一个格式字符串,用于指定日志信息的格式。格式字符串中使用了一些特殊的占位符(以%开头),这些占位符会被替换为相应的日志信息内容

格式占位符说明
%(asctime)s日志记录的时间戳,通常显示为日期和时间。
%(levelname)s日志级别(如 DEBUG、INFO、WARNING、ERROR、CRITICAL)。
%(name)s日志记录器的名称,通常为模块名称。
%(filename)s日志记录发生的文件名。
%(funcName)s日志记录发生的函数名。
%(lineno)d日志记录发生的行号。
%(message)s日志消息本身。

handler.setFormatter( formatter)将创建的格式器对象设置到处理器上。这意味着处理器在处理日志信息时,会使用这个格式器来格式化日志信息.

通过这种⽅式,你可以控制⽇志信息的输出格式,使其包含你感兴趣的信息,如时间戳、⽇志级别、
⽂件名、函数名、⾏号等。

二、 测试报告allure

测试报告allure
官⽅⽂档: https://allurereport.org/docs/pytest-configuration/

2.1 介绍

Allure Report由一个框架适配器和allure命令行工具组成,是一个流行的开源工具,用于可视化测试运行的结果。它可以以很少甚至零配置的方式添加到您的测试工作流中。它生成的报告可以在任何地方打开,并且任何人都可以阅读,无需深厚的技术知识.

2.2 安装与测试使用

1)下载allure-pytest包

pip install allure-pytest==2.13.5

在这里插入图片描述
2)下载Windows版Allure报告
下载压缩包
下载链接:

解压

  • 添加系统环境变量
    allure-2.30.0对应bin⽬录添加到系统环境变量中
    在这里插入图片描述

确认结果
打开cmd,查看allure版本
在这里插入图片描述

出现allure版本则安装成功。

若出现cmd中执行|allure --version可以打印版本,但是pycharm控制台执行命令提示命题找不到,则需要修改pycharm中命令行环境,如下:
在这里插入图片描述

在这里插入图片描述

保存后需要重启pycharm!!!!!!
检查pycharm中命令⾏是否可以使⽤allure命令
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
step2:查看测试报告
1)方法一︰启动一个本地服务器来在浏览器中展示测试报告
终端执行命令: allure serve [options] ,自动在浏览器打开测试报告
–host∶指定服务器监听的主机地址,默认为localhost。
–port:指定服务器监听的端口号,默认为0(自动选择空闲端口)–clean-alluredir:清除上一次生成的测试报告
示例:

#不指定端口号和主机地址
allure serve .\allure-results\
#指定端口号
allure serve --port 8787 . \allure-results\

在这里插入图片描述
在这里插入图片描述

2)⽅法⼆:从测试结果⽣成测试报告
终端执⾏命令:

allure generate [options] <allure-results> -o <reports>

例如

allure generate .\allure-results\ -o . \allure-report --clean

在这里插入图片描述
在这里插入图片描述


🚩总结

请添加图片描述

http://www.dtcms.com/a/487497.html

相关文章:

  • 两阶段随机规划为电力市场注入智慧
  • 公路工程项目管理软件选型指南
  • 潍坊高端网站设计官网搭建平台
  • 电商网站 开发费用山东建设网站首页
  • JDK 8u5 Windows 64位安装教程(详解,含环境变量配置)​
  • 四川城市建设住建厅网站百度官网认证入口
  • 黑马商城day3-微服务01
  • Flutter---两种带输入框的对话框
  • 自己做的网站怎么在移动端访问网站引导插件
  • 做网站的核验单 是下载的吗网站开发和网络设计有什么区别
  • AR模型(自回归模型)
  • 分布式系统相关知识总结
  • 越南k线历史数据、IPO新股股票数据接口文档
  • JavaScript的书写位置和注释
  • 【Java零基础·第6章】面向对象(二):构造器、封装、对象数组
  • 网站 系统设置建筑工程包括哪些项目
  • 重庆专业网站推广报价怎么做刷会员的网站
  • QT-基础
  • 网页设计图片之间空隙北京seo如何排名
  • Feign接口传递复杂参数注解@ModelAttribute+@SpringQueryMap
  • php做网站需要的技术wordpress多主题插件
  • 智能工单时代:IT 工单系统,正在重新定义企业效率
  • 易呈生产ERP系统,助力中小工厂实现智能制造和数字化转型
  • dedecms调取友情链接 网站类型推广计划名称写什么
  • wordpress 单页面 主题襄樊seo
  • Vue3+echarts 3d饼图
  • 网站关键词排名怎么做wordpress 拍卖
  • YOLOv3详解:实时目标检测的巅峰之作
  • 动态仓位管理中波动率系数和ATR_max的计算逻辑
  • 云南建网站需要多少钱wordpress使用邮件发博客