前言
我們在寫用例的時候,單個腳本的用例好執行,那么多個腳本的時候,如何批量執行呢?這時候就需要用到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.打開測試報告,如下圖