将pytest日志保存在文件中

时间:2018-01-10 14:50:53

标签: 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. 我需要stdout才能包含摘要(例如 $.each(arrUniqueFieldNames, function() { var strFName = String(this); oEntries[this] = _.filter(jsonEntries, function (item) { if (item.FieldName === strFName) { return String(item.FieldValue) } }); }); )。如果摘要还包含失败测试的堆栈跟踪,那就没问题,但这不是必需的。
  5. 基本上,我需要测试来产生3种不同的输出:
    1. CI的HTML / JUnit XML工件。
    2. CI日志的CLI最小输出。
    3. 测试人员/自动化团队进行分析的扩展日志。
  6. 我尝试了test-name PASSED插件。据我所知,它可以通过在测试运行时显示所有日志记录来覆盖某些默认的pytest-logs行为。这比默认行为略好,但它仍然远远不是我需要的。从文档中我了解pytest会与pytest-catchlog发生冲突,我甚至不想探索该选项。

    问题

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

1 个答案:

答案 0 :(得分:2)

您可以使用--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。