内容总括
一. 初始化
- setUp 与 tearDown
- setUpClass 与 tearDownClass
- unittest.main(verbosity=0/1/2)
二. 执行顺序
- 按顺序执行 addTest
- 按测试类执行,应用场景为:在一堆类里只想执行其中的一个类
- 按测试模块执行,一个py文件代表一个模块,应用场景为:批量执行
三. 断言
- assertEqual(a,b)
- assertNotEqual(a,b)
- assertTrue(x)
- assertFalse(x)
- assertIs(a,b)
- assertIsNot(a,b)
- assertIsNone(x)
- assertIsNotNone(x)
- assertIn(a,b)
- assertNotIn(a,b)
四. 报告
五. 其他
- 分离初始化模块,即公共模块
- skip, skipIf
解析
1. setUp 与 tearDown
-
- 有几个test,就执行几次setUp 与 tearDown,浪费资源
2. setUpClass 与 tearDownClass
-
- 推荐使用,只初始化一次固件,要加 @classmethod
-
class BaiDuTest(unittest.TestCase):
@classmethod
def setUpClass(cls):
print("start...")
@classmethod
def tearDownClass(self):
print("end...")
if __name__ == '__main__':
unittest.main(verbosity=1)
3. unittest.main(verbosity=0/1/2)
-
- 默认为1,0与1 几乎无差别,展示测试总个数与全局结果
- 2 为详情展示
4 .按顺序执行 addTest
1 import unittest 2 3 class BaiDuTest(unittest.TestCase): 4 @classmethod 5 def setUpClass(cls): 6 print("start...") 7 8 @classmethod 9 def tearDownClass(self): 10 print("end...") 11 def test_baidu(self): 12 print("baidu...") 13 def test_souhu(self): 14 print("souhu...") 15 16 if __name__ == '__main__': 17 suit = unittest.TestSuite() 18 suit.addTest(BaiDuTest.test_souhu) 19 suit.addTest(BaiDuTest.test_baidu) 20 unittest.TextTestRunner(verbosity=2).run(suit)