unittest運行的幾種方式

轉:https://blog.csdn.net/aff60756/article/details/101998966

在說unittest之前,先說幾個概念:

TestCase 也就是測試用例

TestSuite 多個測試用例集合在一起,就是TestSuite

TestLoader是用來加載TestCase到TestSuite中的

TestRunner是來執行測試用例的,測試的結果會保存到TestResult實例中,包括運行了多少測試用例,成功了多少,失敗了多少等信息

 

1.單元測試:

  開發自己測自己寫的代碼;

2.導入模塊unittest:

  import unittest  #導入unittest模塊

  from BeautifulReport import BeautifulReport  #導入BeautifulReport 報告模板模塊

3.運行一個簡單的unittest:

主要是體會一下unittest的寫法

 1 import unittest   #單元測試模塊
 2 
 3 class TestCalc(unittest.TestCase):
 4     def test1(self):    #函數名要以test開頭,否則不會被執行
 5         self.assertEqual(1,1)
 6 
 7     def test2(self):
 8         self.assertEqual(1,2)
 9 
10 unittest.main() #會運行當前python文件裏面的所有測試用例

4.unittest單元測試的基本流程:

  用例集/測試套件:存放測試用例的

  ①.先把所有的測試用例都放到用例集

  ②.運行這些測試用例

  ③.產生報告

 

suite方式組織測試用例1:

 1 import unittest   #單元測試模塊
 2 from BeautifulReport import BeautifulReport as bf  #導入BeautifulReport模塊
 3 
 4 class TestCalc(unittest.TestCase):
 5     def setUp(self):  #每個用例運行之前運行的
 6         print('setup是啥時候運行的')
 7 
 8     def tearDown(self): #每個用例運行之後運行的
 9         print('teardown是啥時候運行的')
10 
11     @classmethod
12     def setUpClass(cls):  #在所有用例執行之前運行的
13         print('我是setUpclass,我位於所有用例的開始')
14 
15     @classmethod
16     def tearDownClass(cls): #在所有用例都執行完之後運行的
17         print('我是tearDownClass,我位於多有用例運行的結束')
18 
19     def testcc(self):    #函數名要以test開頭,否則不會被執行
20         '''這是第一個測試用例'''       #用例描述,在函數下,用三個單引號裏面寫用例描述
21         self.assertEqual(1,1)
22         print('第一個用例')
23 
24     def testaa(self):
25         '''這個是第二個測試用例'''
26         self.assertEqual(1,1)
27         print('第二個用例')
28 
29     def testdd(self):
30         '''用例描述3'''
31         print('第三個用例')
32 
33     def testbb(self):
34         '''用例描述4'''
35         print('第四個用例')
36 
37 suite = unittest.TestSuite()  #定義一個測試集合
38 suite.addTest(unittest.makeSuite(TestCalc))  #把寫的用例加進來(將TestCalc類)加進來
39 run = bf(suite) #實例化BeautifulReport模塊
40 run.report(filename='test',description='這個描述參數是必填的')

  

使用discover方式組織測試用例:

使用場景:

運行指定目錄下的全部測試用例

1 import unittest
2 from BeautifulReport import BeautifulReport    #導入BeautifulReport
3 
4 if __name__ == '__main__':
5     suite_tests = unittest.defaultTestLoader.discover(".",pattern="*tests.py",top_level_dir=None)     #"."表示當前目錄,"*tests.py"匹配當前目錄下所有tests.py結尾的用例
6     BeautifulReport(suite_tests).report(filename='百度測試報告', description='搜索測試', log_path='.')    #log_path='.'把report放到當前目錄下

 

運行指定測試類中的case,suite方式組織測試用例: 

使用場景:

假如有測試類AB,類中各有測試方法1,2,3

假如想僅運行測試類A中方法1,測試類B中的方法3,可以使用這種方式組織測試用例

主要是爲了在case量很大時,很方便的調試

 1 import unittest
 2 import os
 3 from BeautifulReport import BeautifulReport as bf
 4 from case.subway.test_subway import Subway
 5 
 6 #僅運行指定的case Subway是類名,test_subway_001是類中的測試方法名
 7 caseList=[Subway("test_subway_001")]
 8 #使用suite組織測試用例
 9 suite = unittest.TestSuite()
10 suite.addTests(caseList)
11 #運行並生成測試報告 
12 run = bf(suite)
13 run.report(filename="test", description="測試報告")
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章