【问题标题】:Saving pytest logs in a file将 pytest 日志保存在文件中
【发布时间】:2018-06-19 18:38:30
【问题描述】:

我看过这个问题: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

【问题讨论】:

  • 您能找到解决方案吗?我开始编写自己的记录器,用于我的 pytest 模块,但我对解决方案并不感到兴奋。

标签: python logging pytest


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-17
    • 2017-09-25
    • 1970-01-01
    • 1970-01-01
    • 2016-05-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多