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


↙↙↙阅读原文可查看相关链接,并与作者交流