将 pytest 日志保存在文件中

wvx*_*xvw 5 python logging pytest

我见过这个问题:py.test logging messages and test results/assertions into a single file 我还在这里阅读了文档:https : //docs.pytest.org/en/latest/logging.html

两者都接近于令人满意的解决方案。

  1. 我不需要断言结果和日志,但如果它们都在日志中就可以了。
  2. 我需要测试期间生成的所有日志,但我不需要它们用于测试本身。在测试失败/成功后,我需要它们来分析测试结果。
  3. 我需要成功和失败测试的日志。
  4. 我需要标准输出只包含摘要(例如test-name PASSED)。如果摘要还包含失败测试的堆栈跟踪,那也没关系,但这不是必需的。
  5. 本质上,我需要测试产生 3 个不同的输出:
    1. 用于 CI 的 HTML/JUnit XML 工件。
    2. CI 日志的 CLI 最小输出。
    3. 供测试人员/自动化团队分析的扩展日志。

我试过pytest-logs插件。据我所知,它可以pytest通过在测试运行时显示所有日志记录来覆盖某些默认行为。这比默认行为略好,但离我需要的还很远。从文档中我了解到这pytest-catchlog将与 冲突pytest,我什至不想探索该选项。

这是否可以通过配置来实现,pytest或者我应该编写一个插件,或者,甚至一个插件都不会这样做,我将不得不修补pytest

Sil*_*Guy 2

您可以使用--junit-xml=xml-pathswitch 来生成 junit 日志。如果您想要 html 格式的报告,可以使用 pytest-html 插件。同样,您可以使用 pytest-excel 插件生成 excel 格式的报告。

您可以使用 tee 将日志通过管道传输到两个不同的进程。例如:pytest --junit-xml=report.xml | tee log_for_testers.log它将在 stdout 中生成 CI 日志、report.xml 中的 CI 工件和 log_for_testers.log 中的日志以进行团队分析。