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)

 

posted @ 2020-04-17 11:23  南方的墙  阅读(752)  评论(0编辑  收藏  举报