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
我正在编写一组测试用例,例如测试模块中的 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