如何让鼻子的情况下输出记录到单独的文件?(how to make nose to log outpu

2019-10-17 12:53发布

我用鼻子跑了一堆的测试用例。 我想记录每个案例的输出到单独的文件,要知道导致每个案件的[成功/失败。 不幸的是,我无法弄清楚如何与鼻子做。 有谁能够提供一些线索? 谢谢

Answer 1:

首先,这听起来像不寻常的用法 ,并可能表明你应该重新考虑你的测试方案。

我能想到几种方法来解决这个问题的。 最简单的办法是有每个测试日志本身,而不必鼻子为你做它。 如果只有几个测试,或者只关心记录的一些测试结果,这肯定是做到这一点的方式。

一个更复杂的和一般的方法是写一个鼻子插件 ,记录每个测试的结果,因为它完成。 要做到这一点,你会想编写一个插件,实现了afterTest()方法。

from nose.plugins import Plugin
import datetime

class SeparateReports(Plugin):
  "Log the results of each test into a separate file."
  def afterTest(self, test):
    logname = test.id() + '.log'
    success = test.passed
    date = datetime.datetime.now()
    # print logname, datetime.datetime.now(), success
    with open(logname, 'a') as log:
        log.write("%s: %s\n" % (date, success))

这将附加到一个特定的测试而得名成功的邮戳和True / False的故障日志文件。 有两点要注意:

  • 看到该被印刷的结果的一个例子的注释的线。
  • 这个插件将不得不通过鼻子登记 ; 请参阅该文档 。
  • 一旦注册成功,插件将不得不被启用。 使用--with-separatereports的命令行选项(基于插件名称自动地生成)。
  • 因为它触及文件每个测试这将是相当缓慢。 您可能需要一个SQLite数据库是开放的或类似的东西。


文章来源: how to make nose to log output of cases to separate files?