如何使鼻子将案例输出记录到单独的文件中?

zx_*_*ing 1 python testing nose

我正在使用鼻子运行一堆测试用例.我想将每个案例的输出记录到单独的文件中,并且知道每个案例的结果[成功/失败].不幸的是,我无法弄清楚如何用鼻子做到这一点.任何人都可以提供一些线索吗?谢谢

dbn*_*dbn 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))
Run Code Online (Sandbox Code Playgroud)

这将附加到以特定测试命名的日志文件为日期戳,如果成功则为True,对于失败则附加为False.几个笔记:

  • 有关打印结果的示例,请参阅注释掉的行.
  • 这个插件必须由鼻子注册 ; 看文档.
  • 注册后,必须启用插件; 使用命令行选项--with-separatereports(基于插件名称自动生成).
  • 这将非常缓慢,因为它触及每个测试的文件.您可能需要一个打开的sqlite DB或类似的东西.