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