unittest_skip跳过用例执行(3)
在执行测试用例时,有时候有些用例是不需要执行的,比如版本迭代用例弃用,测试周期短只需要执行优先级高的用例,那我们怎么办呢?难道删除这些用例?那下次执行时如果又需要执行这些用例时,又把它补回来?这样操作就太麻烦了,我们可以使用unittest提供的一些跳过指定用例的方法来规避这些问题。
unittest跳过用例的方法如下:
- @unittest.skip(reason):无条件用例。reason是跳过原因,下同。
- @unittest.skipIf(condition, reason):condition为True时跳过用例。
- @unittest.skipUnless(condition, reason):condition为False时跳过用例。
import unittest # 定义预执行用例的优先级(假如用例分为4级,数字越小优先级越高) case_level = 3 class Demo(unittest.TestCase): @unittest.skip("废弃用例,不执行!(强制跳过)") def test_a(self): print("test_a被执行") # 当预执行的用例优先级(3)高于用例的优先级(4)时,则用不执行例 @unittest.skipIf(case_level < 4, "当前用例优先级低,不执行!(条件为True,则跳过)") def test_b(self): print("test_b被执行") # 当预执行的用例优先级(3)高于用例的优先级(4)时,则不执行用例 @unittest.skipUnless(case_level > 4, "当前用例优先级低,不执行!(条件为False,则跳过)") def test_c(self): print("test_c被执行") if __name__ == '__main__': # 识别指定目录下所有以test开头的文件以及文件中的用例,并将用例自动添加到测试套中 test_cases_dir = "./test_cases/" suite = unittest.defaultTestLoader.discover(test_cases_dir) # 生成执行器 runner = unittest.TextTestRunner(verbosity=2) # 执行用例 runner.run(suite)
执行结果