防止 pytest 中长字符串被截断

2023-12-30

我使用 pytest 编写了一个测试工具,用于对我们的代码进行系统测试。这些测试在我们的持续集成系统中使用,因此我使用 junit xml 输出选项。 pytest 截断长字符串给我带来了问题。我知道我可以使用 -vv 选项来阻止它,但是这会为每个测试的结果提供详细的输出,很难阅读。本质上,我想要一种不同的方法来防止至少在 junit xml 文件中截断长字符串。如果它也能在控制台输出中工作,那就更好了,但不是必需的。

我们的代码生成包含大量值的报告,我将输出与一组已知正确的输出进行比较。我正在报告所有有错误的字段,而不仅仅是第一个错误。因此,我生成一个字符串列表,每个字符串有一个错误。然后,我用换行符连接字符串以创建一个长字符串和包含所有错误的长字符串。如果断言失败,我需要查看字符串的全部内容,可能有几百行。

errors = []
error.extend(get_report_errors())
s = '\n'.join(errors)
assert (s == '')

有什么建议

我正在使用 python 2.6 和 2.7 以及 pytest 2.3.5。我可以升级所需的pytest版本。


与更高版本的 pytest(例如 5)一起使用的一个简单技巧是修改控制截断差异量的值。

# conftest.py
from _pytest.assertion import truncate
truncate.DEFAULT_MAX_LINES = 9999
truncate.DEFAULT_MAX_CHARS = 9999  

这允许您将详细程度保留为 0,但仍然可以看到长时间比较失败的内容。只要确保每次更新 pytest 时都进行检查,以确保内部结构没有改变,因为里面的内容很混乱。

Edit正如塞西尔·库里(Cecil Curry)指出的那样,这个黑客并不是一个完整的解决方案。希望 这个功能被添加到 Pytest 中,这样我们就可以在不破坏封装的情况下得到我们想要的东西。 :)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

防止 pytest 中长字符串被截断 的相关文章

随机推荐

  • C++11 虚拟复制构造函数

    我正在阅读 Mark Joshi 的 C 设计模式和衍生品定价 并在 C 11 中实现他的代码 一切都进展顺利 直到我进入第 4 章 他在其中讨论了虚拟复制构造函数 PayOffDoubleDigital thePayOff Low Up
  • 在 Python 中删除停用词的更快方法

    我正在尝试从文本字符串中删除停用词 from nltk corpus import stopwords text hello bye the the hi text join word for word in text split if w
  • 组合两个 sed 命令[重复]

    这个问题在这里已经有答案了 如何组合以下两个 sed 命令 循环目录中的所有文件并从中删除第一行 另一个删除文件行开头的所有双引号 删除每个文件的第一行 for each in bin ls 1 do sed i 1d each done
  • 在 MinGW 上的 GDB 中,如何让 Ctrl-C 停止程序?

    I m on Windows running GDB on an executable built under MinGW The program has an infinite loop I want to find it by hitt
  • Git origin/HEAD 参考仍然过时,导致 git fetch 来回跳动

    我在我的 Git 存储库之一中发现了奇怪的行为 克隆后不久 我看到了这种情况 git show ref 06e26a871527e0a5dfaffa3d01887448939fb621 refs heads master 06e26a871
  • 将索引选定的 numpy 数组添加到另一个具有重叠索引的 numpy 数组

    我有两个 numpy 数组image and warped image和索引数组ix iy 我需要添加image to warped image这样image i j 被添加到warped image iy i j ix i j 如果成对
  • 队列 上的原子操作?

    我应该在 Visual C 中实现一个带有队列的类 在这个队列中我必须执行原子操作 在网上搜索 我找到了 std atomic 类 但我保留了一些问题 第一个是 它们之间有什么区别 A atomic
  • 进度搜索栏通知未显示在 DownloadManager android 中

    我正在从 webview 下载文件 但它没有显示类似于以下内容的正在进行的下载通知this https i stack imgur com RW8v6 jpg使用下载管理器时 它只是在后台运行 如何在下载过程中显示状态栏通知 我可以获取下载
  • 使用 JNI 将字符串数组从 java 传递到 C

    我有一个像这样的字符串数组 myname yourname hisname 我正在尝试将此数组发送到C与使用JNI 我找不到任何明确的解决方案 我试图把这个字符串作为chararray但没有成功 有没有办法做到这一点 您可以编写一个简单的函
  • 用Delphi查找系统字体

    查找用户可用的所有系统字体以便将它们显示在下拉选择框中的最佳方法是什么 我还想区分 Unicode 和非 Unicode 字体 我正在使用完全支持 Unicode 的 Delphi 2009 并且想要一个 Delphi 解决方案 The S
  • res.redirect() 在 Node.js 中对我不起作用

    我正在尝试发布 draft 请求并创建一个新的 草稿 更新我的数据库中的现有草稿 之后我想立即重定向到 draft id RELEVANT ID HERE 页面 这是我当前的 POST 请求功能 app post draft functio
  • COLOR_ATTACHMENT's - 如何将多个纹理渲染为帧缓冲区对象内的颜色附件?

    我正在尝试渲染多个纹理COLOR ATTACHMENT没有成功 我从显示它们中得到的只是黑屏 带有红色透明填充 这意味着我的纹理已读取但为 空 我的伪代码是 将 3 个纹理附加到 FBO 纹理索引分别为 1 2 和 3 颜色附件分别为 0
  • 更改 Magento 中结账按钮的显示顺序

    我需要按顺序在购物车页面中放置结账按钮 1 Proceed to checkout 2 Google checkout 3 Paypal Express 结帐 xml 里面
  • PHP - 编辑 zip 存档中的文件并在关闭前另存为另一个存档名称

    我有一个 Microsoft Word 文件 用作模板 testingsample docx 该计划是使用表单输入值来创建租赁协议 我在下面找到的代码非常适合打开 docx 文件并查找和替换所需的字符串 问题是它只能工作一次 第一次运行时
  • Safari 中的 EventTarget 接口

    我开始延长EventTarget界面中添加一些有用的prototypes但后来我在 Safari 8 上测试了它并得到 Error ReferenceError Can t find variable EventTarget 我发现MDN
  • 谷歌日历 API 与 PHP

    我需要集成谷歌日历 API 以在我的 php 网站中显示登录用户谷歌日历 其功能与谷歌日历中的所有功能相同 有什么可能的方法来做到这一点 目前正在处理这个https developers google com google apps cal
  • 多线程GUI编程需求说明

    我正在寻找关于在图形应用程序中使用多线程的必要性的良好解释 在下面的示例中使用了Python 但问题不是Python特定的 它可能适用于任何语言的图形编程的一般设计 让我们举一个简单的例子 假设有一个应用程序对一组文件执行某种耗时的操作 并
  • 如何强制 Visual Studio 使用 x64 DNX SDK 架构

    我使用的是 1 0 0 beta7 x64 但视觉工作室坚持我使用的是 x86 当我删除除目标运行时之外的所有运行时时 我得到以下信息 我在项目中的任何地方都找不到 x86 的引用 当我将鼠标悬停在此处的解决方案 DNX SDK 版本上时
  • 使用 cron 作业删除日志文件

    你好 我想从文件夹中删除过去 7 天的所有日志文件 但保留所有其他文件 我可以使用下面的命令吗 如何指定它只删除扩展名为 log 的文件 find path to file mtime 7 exec rm f 我是否需要将此命令写入某个文件
  • 防止 pytest 中长字符串被截断

    我使用 pytest 编写了一个测试工具 用于对我们的代码进行系统测试 这些测试在我们的持续集成系统中使用 因此我使用 junit xml 输出选项 pytest 截断长字符串给我带来了问题 我知道我可以使用 vv 选项来阻止它 但是这会为