如何在具有鼻测的文件中指定单个testing?
我有一个名为test_web.py的文件,其中包含一个类TestWeb和许多名为test_something()的方法。
我可以像这样在课堂上进行每一个testing:
$ nosetests test_web.py ... ====================================================================== FAIL: checkout test ---------------------------------------------------------------------- Traceback (most recent call last): File "/Users/me/path/here/test_web.py", line 187, in test_checkout ...
但我似乎无法运行个别testing。 在同一个PWD中运行时,这些给我“没有这样的testing”的错误:
$ nosetests test_web.py:test_checkout $ nosetests TestWeb:test_checkout
这里有什么可能是错的?
您必须像这样指定它: nosetests <file>:<Test_Case>.<test_method>
或
nosetests test_web.py:TestWeb.test_checkout
看文档
你也可以指定一个模块:
nosetests tests.test_integration:IntegrationTests.test_user_search_returns_users
在命令行中指定名称与其他答案一样,可以起到一定的作用,这很有用。 然而,当我正在写testing的时候,我经常会发现我只想运行我正在进行的testing,而且我必须在命令行上写的名字变得相当长和繁琐。 在这种情况下,我更喜欢使用自定义装饰器和标志。
我定义wipd
(“正在进行装饰器”)如下所示:
from nose.plugins.attrib import attr def wipd(f): return attr('wip')(f)
这个定义了一个装饰器@wipd
,它将在它所装饰的对象上设置@wipd
属性。 例如:
import unittest class Test(unittest.TestCase): @wipd def test_something(self): pass
然后,可以在命令行中使用@wipd
将testing的执行缩小到标有@wipd
的testing。
注意名字…
我使用@wipd
作为装饰器而不是@wip
来避免这种问题:
import unittest class Test(unittest.TestCase): from mymodule import wip @wip def test_something(self): pass def test_something_else(self): pass
import
将使wip
装饰器成为该类的成员,并且将select该类中的所有testing。 attrib
插件检查testing方法的父类,看是否存在所选的属性,并且由attrib
创build和testing的属性不存在于隔离的空间中。 所以如果你用-a foo
testing,而你的类包含foo = "platypus"
,那么这个类中的所有testing都会被插件选中。
要运行多个特定的testing,您可以将它们添加到命令行中,以空格分隔。
nosetests test_web.py:TestWeb.test_checkout test_web.py:TestWeb.test_another_checkout