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

Pytest --capture 参数详解:如何控制测试执行过程中的输出行为

--capture 选项用于控制测试用例执行过程中标准输出(stdout)和标准错误输出(stderr)的捕获行为。


--capture 的选项值:
fd(默认)
捕获文件描述符级别的输出(stdout 和 stderr)。
使用此模式,所有的标准输出和标准错误都会被捕获,即使它们来自 C 扩展模块。
sys
捕获 Python 层级的 sys.stdout 和 sys.stderr。
no
不捕获输出,标准输出和错误直接显示在终端中。
tee-sys
将 sys.stdout 和 sys.stderr 的输出同时捕获并输出到终端(类似于实时查看日志的效果)。此选项在调试时非常有用。
使用方式:
可以在运行 pytest 时通过命令行指定:

pytest --capture=fd          # 默认行为
pytest --capture=sys         # 仅捕获 Python 层级输出
pytest --capture=no          # 不捕获输出,实时打印
pytest --capture=tee-sys     # 同时捕获并输出到终端

示例:
假设有一个测试文件 test_example.py:

import sysdef test_print():print("This is a test for stdout.")sys.stderr.write("This is a test for stderr.\n")assert True

1. 默认模式 (fd):
运行命令:

pytest --capture=fd

输出:标准输出和错误不会直接显示在终端中,而是只在失败时打印或保存在日志中。
2. 不捕获模式 (no):
运行命令:

pytest --capture=no

输出:标准输出和标准错误会实时显示在终端中。
3. tee-sys 模式:
运行命令: 

pytest --capture=tee-sys

输出:标准输出和标准错误会实时显示在终端中,同时也会被捕获。


配置到 pytest.ini:
如果想始终使用某种捕获行为,可以将其添加到 pytest.ini 文件:

[pytest]
addopts = --capture=tee-sys

以下是我本地在执行过程中指定tee-sys时终端的输出:

---Captured log call--- 下面是网络请求的日志和执行的日志,即使用logging记录的日志。 

总结:
--capture 是一个灵活的选项,用于控制标准输出和错误的捕获方式。
在调试时,--capture=no 或 --capture=tee-sys 通常更方便,能实时看到日志输出。

http://www.lryc.cn/news/496029.html

相关文章:

  • IS-IS的原理
  • C++(4个类型转换)
  • Ubuntu20.04安装NVIDIA显卡驱动
  • 速盾:介绍一下高防cdn的缓存响应事什么功能?
  • Nuclei-快速漏洞扫描器
  • linux网络抓包工具
  • 详解桥接模式
  • 探索AI新世界!热门工具与学习资源免费获取
  • vue3项目搭建-6-axios 基础配置
  • Django 视图层
  • 代理IP与百度在信息时代的交互
  • 1、Three.js开端准备环境
  • 什么是Batch Normalization?
  • 十四(AJAX)、AJAX、axios、常用请求方法(GET POST...)、HTTP协议、接口文档、form-serialize
  • vue2怎么写computed属性
  • 【从零开始的LeetCode-算法】35. 搜索插入位置
  • vscode + conda + qt联合开发
  • 技术总结(四十三)
  • mac终端自定义命令打开vscode
  • 代码设计:设计模式:应对变化
  • Proteus中添加新元件库
  • Hive学习基本概念
  • 运维工程师.云计算工程师面试题.考试题
  • 四、初识C语言(4)
  • 解决爬虫ConnectionResetError出现的问题
  • Qt桌面应用开发 第十天(综合项目二 翻金币)
  • vue跳转以及传参
  • Meta Reality Labs的VR/AR投资战略转向:内部视角与市场影响
  • animate.css和wow.js结合使用实现动画效果
  • 【大模型】ChatGPT 提示词优化进阶操作实战详解