nose
軟件包通常用於運行doctests以及專用測試文件中的測試。它似乎即使在doctest文件中,也會嘗試運行setup
和teardown
固件。禁用鼻子運行設置()
當doctesting模塊正好需要一些其它目的命名setup
功能 - 它可能是一個Sphinx extension,例如 - nosetests將調用setup
和失敗。
爲了清楚起見,這裏是一個例子:
def my_tricky_function(arg):
"""Do something testable
>>> my_tricky_function(1)
2
"""
return arg + arg
def my_extension(app):
...
def setup(app):
"""Establish sphinx hooks"""
app.connect('build-finished', my_extension)
運行nosestests
結果:
File ".../site-packages/nose/suite.py", line 291, in setUp
self.setupContext(ancestor)
File ".../site-packages/nose/suite.py", line 314, in setupContext
try_run(context, names)
File ".../site-packages/nose/util.py", line 468, in try_run
return func(obj)
File "sphinx_ext.py", line 14, in setup
app.connect('build-finished', my_extension)
AttributeError: 'module' object has no attribute 'connect'
(注意:當setup
接受一個參數,nosetest穿過其中setup
是一個範圍名稱,在這種情況下,模塊)。
請注意,以下不(似乎適用):
- 將屬性
__test__ = False
(或使用this decorator)添加到setup
不會停止它被調用。 - 有相當於
--ignore-files
- 設置
my_tricky_function.setup = None
不停止模塊級設置(H/T @alecxe)
只是在黑暗中拍攝 - 設置'my_tricky_function.setup = None'幫助嗎? – alecxe