如何使用nose plugin startTest方法返回有关测试的信息

时间:2014-05-13 07:32:44

标签: python nose nosetests

我创建了这个演示插件,看看插件是如何工作的:(只添加了startTest方法)

import logging 
import os
from nose.plugins import Plugin
import nose

log = logging.getLogger('nose.plugins.helloworld')

class HelloWorld(Plugin):
    name = 'helloworld'

    def options(self, parser, env=os.environ):
        super(HelloWorld, self).options(parser, env=env)

    def configure(self, options, conf):
        super(HelloWorld, self).configure(options, conf)
        if not self.enabled:
            return

    def finalize(self, result):
        log.info('Hello pluginized world!')

    def startTest(self, test):
        print "startTest method was run"
        print test.__doc__

但是当使用此插件运行测试时,而不是获得测试的__doc__, 我正在获得通用测试用例包装器doc。

startTest method was run
The universal test case wrapper.

When a plugin sees a test, it will always see an instance of this
class. To access the actual test case that will be run, access the
test property of the nose.case.Test instance.

我无法弄清楚如何access test property of the nose.case.test 我曾尝试使用print nose.case.Test.__test__,但这会返回bool值。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我会在你的startTest()函数中注入import pdb; pdb.set_trace()并仔细查看调试器中的test实例。我确定你要找的信息在那里,它可能只有几个级别。不要忘记将-s添加到您的nosetests运行中以启用与调试器的stdout交互。

编辑:我只是通过基本功能测试做到了这一点。对于这种特殊情况,该文档位于test.test.test.__doc__下。测试定义为:

def test_a():
    "mydoc"
    pass

注意:请不要忘记通过设置self.enable=True实际启用插件。