通过名称

时间:2015-11-07 08:31:08

标签: python unit-testing nose

nose发现过程查找名称以test开头的所有模块,并在其中查找名称中包含test的所有函数,并尝试将它们作为单元测试运行。见http://nose.readthedocs.org/en/latest/man.html

我在文件make_test_account中有一个名为accounts.py的函数。我想在名为test_account的测试模块中测试该函数。所以在那个文件的开头我做了:

from foo.accounts import make_test_account

但是现在我发现nose将函数make_test_account视为单元测试并尝试运行它(失败因为它没有传递任何参数,这是必需的)。

如何确保鼻子特别忽略该功能?我更喜欢这样做,这意味着我可以调用鼻子nosetests,而不需要任何命令行参数。

2 个答案:

答案 0 :(得分:10)

Nose有一个nottest装饰器。但是,如果您不想在导入的模块中应用@nottest装饰器,也可以在导入后简单地修改方法。将单元测试逻辑保持在单元测试本身附近可能更清晰。

from foo.accounts import make_test_account
# prevent nose test from running this imported method
make_test_account.__test__ = False

您仍然可以使用nottest,但效果相同:

from nose.tools import nottest
from foo.accounts import make_test_account
# prevent nose test from running this imported method
make_test_account = nottest(make_test_account)

答案 1 :(得分:9)

告诉鼻子该函数不是测试 - 使用nottest装饰器。

# module foo.accounts

from nose.tools import nottest

@nottest
def make_test_account():
    ...