我创建了这个演示插件,看看插件是如何工作的:(只添加了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
值。
有什么想法吗?
答案 0 :(得分:0)
我会在你的startTest()函数中注入import pdb; pdb.set_trace()
并仔细查看调试器中的test
实例。我确定你要找的信息在那里,它可能只有几个级别。不要忘记将-s
添加到您的nosetests运行中以启用与调试器的stdout交互。
编辑:我只是通过基本功能测试做到了这一点。对于这种特殊情况,该文档位于test.test.test.__doc__
下。测试定义为:
def test_a():
"mydoc"
pass
注意:请不要忘记通过设置self.enable=True
实际启用插件。