场景:根据用例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:跳过的用例,不在测试报告中体现
ps:
@unittest.skipIf(True, 'skip_reason') 1.是装饰器,既可以作用于类,也可以作用于方法 2.跳过条件一般为常量
self.skipTest('skip_reason') 1.是执行语句,写在方法内,跳过该方法 2.可根据不同变量值跳过,较灵活