1

我正在使用鼻子来运行一堆测试用例。我想将每个案例的输出记录到单独的文件中,并了解每个案例的结果[成功/失败]。不幸的是,我不知道怎么用鼻子做。有人可以提供一些线索吗?谢谢你

4

1 回答 1

5

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

我可以想出几种方法来解决这个问题。最简单的方法是让每个测试记录自己,而不是让鼻子为你做。如果您只有几个测试,或者只关心记录几个测试的结果,那么这绝对是这样做的方法。

更复杂和通用的方法是编写一个鼻子插件,在每次测试完成时记录它的结果。为此,您需要编写一个实现 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 表示失败。几点注意事项:

  • 有关打印结果的示例,请参见注释掉的行。
  • 这个插件需要通过nose注册;请参阅文档
  • 注册后,必须启用插件;使用命令行选项--with-separatereports(根据插件名称自动生成)。
  • 这会很慢,因为它会为每个测试触及文件。您可能需要一个开放的 sqlite DB 或类似的东西。
于 2013-01-03T02:28:58.873 回答