首页 > 其他 > 详细

unittest 基础详解

时间:2019-09-01 01:06:06      阅读:153      评论:0      收藏:0      [点我收藏+]

  内容总括

  一. 初始化

    1. setUp 与 tearDown
    2. setUpClass 与 tearDownClass
    3. unittest.main(verbosity=0/1/2)

  二. 执行顺序

    1. 按顺序执行 addTest
    2. 按测试类执行,应用场景为:在一堆类里只想执行其中的一个类
    3. 按测试模块执行,一个py文件代表一个模块

  三. 断言

  四. 报告

  五. 其他

    1. 分离初始化模块,即公共模块
    2. 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)
View Code

5. 按测试类执行

技术分享图片
 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 class BaiDuTest2(unittest.TestCase):
17     @classmethod
18     def setUpClass(cls):
19         print("start2...")
20 
21     @classmethod
22     def tearDownClass(self):
23         print("end2...")
24     def test_baidu(self):
25         print("baidu2...")
26 
27 if __name__ == __main__:
28     suit = unittest.TestSuite(unittest.makeSuite(BaiDuTest2))
29     unittest.TextTestRunner(verbosity=2).run(suit)
30  
View Code
或者:
suit = unittest.TestLoader().loadTestsFromTestCase(BaiDuTest2)
unittest.TextTestRunner(verbosity=2).run(suit)

6. 按测试模块执行

技术分享图片
 1 # -*- coding:utf-8 -*-
 2 import unittest
 3 import os
 4 
 5 class BaiDuTest(unittest.TestCase):
 6     def test_baidu(self):
 7         print("baidu...")
 8 
 9 if __name__ == __main__:
10     # 定义测试集所在文件夹
11     path = os.path.dirname(__file__)  # 当前执行路径
12     print(path)
13     # discover = unittest.defaultTestLoader.discover(path,pattern=‘test*.py‘) # 支持正则
14     discover = unittest.defaultTestLoader.discover(path,pattern=ttst.py)
15     runner = unittest.TextTestRunner(verbosity=2).run(discover)
View Code

7. 分离初始化模块

技术分享图片
 1 class InitTest(unittest.TestCase):
 2     @classmethod
 3     def setUpClass(cls):
 4         print("start...")
 5 
 6     @classmethod
 7     def tearDownClass(self):
 8         print("end...")
 9 
10 class BaiDuTest(InitTest):
11     def test_baidu(self):
12         print("baidu...")
View Code

8. skip, skipIf

技术分享图片
 1 class BaiDuTest(InitTest):
 2     def test_baidu(self):
 3         print("baidu...")
 4 
 5     @unittest.skip("skip TestCase")
 6     def test_baidu2(self):
 7         print("baidu2...")
 8 
 9     @unittest.skipIf(1!=1,"skip TestCase")
10     def test_baidu3(self):
11         print("baidu3...")
12 
13 
14 
15 if __name__ == __main__:
16     unittest.main(verbosity=2)
View Code

 

unittest 基础详解

原文:https://www.cnblogs.com/zhang-dan/p/11440899.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!