python-unittest执行顺序
关于unittest框架执行顺序是:
import unittest class TestCases(unittest.TestCase): @classmethod def setUpClass(cls): setattr(unittest.TextTestResult, 'startTestRun', '获取token方法') print("setUPClass") def setUp(self): print("setUP") def testOne(self): print("testone111") def testTwo(self): print("testtwo222") @unittest.skip('跳过') def testA(self): print("testA") @unittest.skipIf(True,'条件真跳过') def testB(self): print("testB") @unittest.skipUnless(False,'条件假跳过') def testC(self): print("testC") @unittest.expectedFailure ##标记该测试预期为失败(断言结果是否为False,为假则测试用例通过) def testD(self): print("testD") def tearDown(self): print("tearDown") @classmethod def tearDownClass(cls): print(getattr(unittest.TextTestResult, 'startTestRun')) print("tearDownClass") if __name__ == '__main__': unittest.main(verbosity=2)
out:
setUPClass
setUP
testD
tearDown
setUP
testone111
tearDown
setUP
testtwo222
tearDown
获取token方法
tearDownClass
关于unittest用例执行顺序是:
根据ASCII码的顺序加载,数字与字母的顺序为:0-9,A-Z,a-z。所以以A开头的测试用例方法会优先执行,以a开头会后执行
""" unittest中测试用例执行顺序 """ import unittest from operator import eq class TestOrder(unittest.TestCase): def test_b(self): print('test_b success') def test_a1(self): print('test_a1 success') def test_c(self): print('test_c success') def test_a2(self): print('test_a2 success') if __name__ == '__main__': def ln(f): return getattr(TestOrder, f) suite = unittest.TestSuite() loader = unittest.TestLoader() # eq(x,y) 函数用于比较2个对象,如果 x < y 返回 -1, 如果 x == y 返回 0, 如果 x > y 返回 1 loader.sortTestMethodsUsing = lambda a, b: eq(ln(a), ln(b)) suite.addTest(loader.loadTestsFromTestCase(TestOrder)) unittest.TextTestRunner(verbosity=2).run(suite)