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

时间:2015-04-01 18:19:56

标签: python unit-testing nose

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

有没有办法跳过Test1或使用命令nose.main()选择性地只执行该模块中的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')

1 个答案:

答案 0 :(得分:2)

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

但是如果你想不运行测试,你可以像在命令行中那样执行它:使用--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 stackoverflow.py
stackoverflow.test_number_one ... ok

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

OK