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

相關文章