16.3.11 跳过测试
倘若一些外部条件不满足,那么跳过测试通常会很有用。例如,如果编写测试来检查一个特定Python版本中某个库的行为,那么就没有必要在Python的其他版本下运行这些测试。测试类和方法可以用skip()修饰,这样就会跳过测试。修饰符skipIf()和skipUnless()可以在跳过测试之前检查一个条件。
import sys
import unittest
class SkippingTest(unittest.TestCase):
@unittest.skip('always skipped')
def test(self):
self.assertTrue(False)
@unittest.skipIf(sys.version_info[0] > 2,
'only runs on python 2')
def test_python2_only(self):
self.assertTrue(False)
@unittest.skipUnless(sys.platform == 'Darwin',
'only runs on macOS')
def test_macos_only(self):
self.assertTrue(True)
def test_raise_skiptest(self):
raise unittest.SkipTest('skipping via exception')
如果条件很复杂,很难用已给表达式来表述并传递到skipIf()或skipUnless(),那么在这种情况下,测试用例可以直接产生SkipTest来跳过测试。