场景:根据用例1的结果来判断是否要跳过用例2
unittest的装饰器skip方法,装饰器中的变量先于测试用例执行,所以取不到用例1中的结果。解决方案:在测试用例中使用skipTest()方法,如下:
import unittest b = 0 class Mytest_1(unittest.TestCase): def setUp(self) -> None: pass def tearDown(self) -> None: pass def test_1(self): global b b = 3 def test_2(self): # 被成功跳过 if b == 3: self.skipTest('skip reason') print('2 pass') @unittest.skipIf(b == 3, 'skip reason') def test_3(self): # 没跳过,因为装饰器中的b先于test_1执行,b值为0 print('3 pass') if __name__ == '__main__': unittest.main()
执行结果如下( 可以看到只有test_2()被跳过了):
ps:跳过的用例,不在测试报告中体现