unittest在执行用例(test_xxx)时,并不是按从上到下的顺序执行,有特定的顺序。
示例:
import unittest class TestBdd(unittest.TestCase):
def setup(self):
print("test TestBdd :") def test_ccc(self):
print("test ccc") def test_aaa(self):
print("test aaa") def tearDown(self):
pass class TestAdd(unittest.TestCase): def setup(self):
print("test TestAdd :") def test_bbb(self):
print("test bbb") def tearDown(self):
pass if __name__ == '__main__':
unittest.main()
执行结果:
==============
test TestAdd:
test bbb
.test TestBdd:
test aaa
.test TestBdd:
test ccc
.
-------------------------
unittest框架默认根据ACSII码的顺序加载测试用例,数字与字母的顺序为:0~9,A~Z,a~z。
- 对于类来说,class TestAxx 会优先于class TestBxx被执行。
- 对于方法来说,test_aaa()方法会有优先于test_bbb()被执行。
对于测试目录与测试文件来说,unittest同样是按照这个规则来加载测试用例的。
如果不想让test—bbb()先执行,需要通过TestSuite类的addTest()方法按照一定的顺序来加载
run.py .... if __name__ == '__main__':
#构造测试集
suite = unittest.TestSuite()
suite.addTest(TestBdd("test_ccc"))
suite.addTest(TestAdd("test_bbb"))
suite.addTest(TestBdd("test_aaa"))
#执行测试
runner = unittest.TextTestRunner()
runner.run(suite)
执行结果如下:
===============
test TestBdd:
test ccc
.test TestAdd:
test bbb
.test TestBdd:
test aaa
.
--------------------