Python單元測試框架unittest之批量用例管理(discover)


前言

我們在寫用例的時候,單個腳本的用例好執行,那么多個腳本的時候,如何批量執行呢?這時候就需要用到unittet里面的discover方法來加載用例了。加載用例后,用unittest里面的TextTestRunner類的run方法去一次執行多個腳本的用例。

 

一、新建測試項目

1.pycharm左上角File>New Projetc>Pure Python,在location位置命名一個測試工程的名稱:Mytest,然后保存;

 

2.右鍵選中剛才新建的工程>New>Python Package>新建一個unitest的python包,注意是unitest,不是unittest

3.右鍵選中步驟2中創建的unitest包,創建一個case包

4.重復步驟3,在case包下面,依次創建baidu和wangyi包

5.分別在baidu和wangyi包下面創建2個測試用例腳本,testA,testB,testC,testD是我們寫用例的腳本。

創建完后的層次結構如下圖:

6.testA腳本創建完后,打開文件,寫入用例,其它三個測試用例的內容類似

腳本內容為:

 1 # coding:utf-8
 2 
 3 import unittest
 4 
 5 # print help(unitest)
 6 class testA(unittest.TestCase):
 7 
 8     def setUp(self):
 9         print "testA------setUp"
10         pass
11 
12     def tearDown(self):
13         print "testA------tearDown"
14         pass
15 
16     def test_A001(self):
17         print ("test_A001")
18 
19     def test_A002(self):
20         print ("test_A002")

 

7.在unitest下面創建一個腳本run_all_case.py,接下來用這個腳本去批量執行所有的用例。

 

二、discover加載測試用例

1.discover方法里面有三個參數:

-case_dir:這個是待執行用例的目錄。

-pattern:這個是匹配腳本名稱的規則,test*.py意思是匹配test開頭的所有腳本。

-top_level_dir:這個是頂層目錄的名稱,一般默認等於None就行了。

2.discover加載到的用例是一個list集合,需要重新寫入到一個list對象testcase里,這樣就可以用unittest里面的TextTestRunner這里類的run方法去執行。

3.運行結果如下:

1 C:\Python27\python.exe C:/Users/zhangxiaoding/PycharmProjects/Mytest/unitest/run_all_case.py
2 C:\Users\zhangxiaoding\PycharmProjects\Mytest\unitest\report
3 C:\Users\zhangxiaoding\PycharmProjects\Mytest\unitest\report
4 <unittest.suite.TestSuite tests=[<unittest.suite.TestSuite tests=[<unittest.suite.TestSuite tests=[<case.baidu.testA.testA testMethod=test_A001>, <case.baidu.testA.testA testMethod=test_A002>]>]>, <unittest.suite.TestSuite tests=[<unittest.suite.TestSuite tests=[<case.baidu.testB.testB testMethod=test_B001>, <case.baidu.testB.testB testMethod=test_B002>]>]>, <unittest.suite.TestSuite tests=[<unittest.suite.TestSuite tests=[<case.wangyi.testC.testC testMethod=test_C001>, <case.wangyi.testC.testC testMethod=test_C002>]>]>, <unittest.suite.TestSuite tests=[<unittest.suite.TestSuite tests=[<case.wangyi.testD.testD testMethod=test_D001>, <case.wangyi.testD.testD testMethod=test_D002>]>]>]>
5 ........
6 Time Elapsed: 0:00:00.039000
7 
8 Process finished with exit code 0

其中discover加載到的所有測試用例如下:

1 <unittest.suite.TestSuite tests=[<unittest.suite.TestSuite tests=[<unittest.suite.TestSuite tests=[<case.baidu.testA.testA testMethod=test_A001>, <case.baidu.testA.testA testMethod=test_A002>]>]>, <unittest.suite.TestSuite tests=[<unittest.suite.TestSuite tests=[<case.baidu.testB.testB testMethod=test_B001>, <case.baidu.testB.testB testMethod=test_B002>]>]>, <unittest.suite.TestSuite tests=[<unittest.suite.TestSuite tests=[<case.wangyi.testC.testC testMethod=test_C001>, <case.wangyi.testC.testC testMethod=test_C002>]>]>, <unittest.suite.TestSuite tests=[<unittest.suite.TestSuite tests=[<case.wangyi.testD.testD testMethod=test_D001>, <case.wangyi.testD.testD testMethod=test_D002>]>]>]>

4.運行結果后會在unitest下創建一個report文件夾(如果沒有該文件夾則創建,否則不創建),里面存放本次運行結束后的測試報告

5.打開測試報告,如下圖

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM