unittest--TestCase 按宣告順序執行

大桥發表於2020-05-19

unittest 中,TestCase 預設是按函式名順序來執行的,如果想按宣告順序執行,一般的辦法是修改函式名,或者引入 utx ,這裡再提供一個似乎更簡潔的方法。

# encoding=utf8
"""
一個unittest的demo,按函式宣告的順序執行測試用例
"""
import unittest

class TestCasesOrder(unittest.TestCase):
    def test_b(self):
        print('test_b success')

    def test_a(self):
        print('test_a success')

    def test_c(self):
        print('test_c success')


class SequentialTestLoader(unittest.TestLoader):
    def getTestCaseNames(self, testCaseClass):
        test_names = super().getTestCaseNames(testCaseClass)
        testcase_methods = list(testCaseClass.__dict__.keys())
        test_names.sort(key=testcase_methods.index)
        return test_names

if __name__ == '__main__':
    unittest.main(testLoader=SequentialTestLoader())


執行結果:

test_b success
.test_a success
.test_c success
.
----------------------------------------------------------------------
Ran 3 tests in 0.001s

OK

相關文章