Python 单元测试:在 Nose 中有没有办法跳过 nose.run() 中的测试用例?

Python Unit-Testing: In Nose is there a way to skip a test case from nose.run()?

我正在编写一组测试用例,例如测试模块中的 Test1、Test2。

有没有办法使用命令 nose.main() 在该模块中跳过 Test1 或有选择地仅执行 Test2?

我的模块包含,

test_module.py,

class Test1:
    setUp(self):
       print('setup')
    tearDown(self):
       print('teardown')
    test(self):
       print('test1')

class Test2:
    setUp(self):
       print('setup')
    tearDown(self):
       print('teardown')
    test(self):
       print('test2')

我 运行 它来自另一个 python 文件,使用

if __name__ == '__main__':
    nose.main('test_module')

跳过测试和不运行测试的概念在 nose 的上下文中是不同的:跳过的测试将在测试结果的末尾报告为跳过。如果你想跳过测试,你将不得不用装饰器猴子修补你的测试模块或做一些其他的黑魔法。

但是如果你不想 运行 测试,你可以像在命令行中那样做:使用 --exclude 选项。它需要一个你不想测试的正则表达式运行。像这样:

import sys
import nose

def test_number_one():
    pass

def test_number_two():
    pass

if __name__ == '__main__':
    module_name = sys.modules[__name__].__file__

    nose.main(argv=[sys.argv[0],
                    module_name,
                    '--exclude=two',
                    '-v'
                    ])

运行 测试会给你:

$ python Whosebug.py
Whosebug.test_number_one ... ok

----------------------------------------------------------------------
Ran 1 test in 0.002s

OK