gpt4 book ai didi

integration-testing - 防止截断pytest中的长字符串

转载 作者:行者123 更新时间:2023-12-04 08:13:48 25 4
gpt4 key购买 nike

我已经使用 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 时进行检查以确保内部没有改变,因为它在里面乱七八糟。
编辑
正如 Cecil Curry 所指出的,这个 hack 并不是一个完整的解决方案。希望
这个特性被添加到 Pytest 中,因此我们可以在不破坏封装的情况下获得我们想要的东西。 :)

关于integration-testing - 防止截断pytest中的长字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19171554/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com