前言
我們在寫用例的時候,單個腳本的用例好執行,那么多個腳本的時候,如何批量執行呢?這時候就需要用到unittet里面的discover方法來加載用例了。
加載用例后,用unittest里面的TextTestRunner這里類的run方法去一次執行多個腳本的用例。
一、新建測試項目
1.pycharm左上角File>New Projetc>Pure Python,在location位置命名一個測試工程的名稱:yoyotest,然后保存

2.選中剛才新建的工程右鍵>New>Python Package>新建一個case文件夾

3.重復第2步的操作,新建一個case的文件夾,在里面添加一個baidu和一個blog的文件夾,里面分別有兩個用例的腳本,如下圖所示。
test_01,test_02,test_03,test_04是我們寫用例的腳本
4.test_01創建完后,打開腳本,寫入用例
5.在yoyotest這個項目下面創建一個腳本run_all_case.py,接下來用這個腳本去批量執行所有的用例。

二、diascover加載測試用例
1.discover方法里面有三個參數:
-case_dir:這個是待執行用例的目錄。
-pattern:這個是匹配腳本名稱的規則,test*.py意思是匹配test開頭的所有腳本。
-top_level_dir:這個是頂層目錄的名稱,一般默認等於None就行了。
2.discover加載到的用例是一個list集合,需要重新寫入到一個list對象testcase里,這樣就可以用unittest里面的TextTestRunner這里類的run方法去執行。
3.運行后結果如下,就是加載到的所有測試用例了:
<unittest.suite.TestSuite tests=[<baidu.test_01.Test testMethod=test01>, <baidu.test_01.Test testMethod=test02>, <baidu.test_01.Test testMethod=test03>, <baidu.test_02.Test testMethod=test01>, <baidu.test_02.Test testMethod=test02>, <baidu.test_02.Test testMethod=test03>, <bolg.test_03.Test testMethod=test01>, <bolg.test_03.Test testMethod=test02>, <bolg.test_03.Test testMethod=test03>, <bolg.test_04.Test testMethod=test01>, <bolg.test_04.Test testMethod=test02>, <bolg.test_04.Test testMethod=test03>]>
三、run測試用例
1.為了更方便的理解,可以把上面discover加載用例的方法封裝下,寫成一個函數
2.參考代碼:
# coding:utf-8
import unittest
import os
# 用例路徑
case_path = os.path.join(os.getcwd(), "case")
# 報告存放路徑
report_path = os.path.join(os.getcwd(), "report")
def all_case():
discover = unittest.defaultTestLoader.discover(case_path,
pattern="test*.py",
top_level_dir=None)
print(discover)
return discover
if __name__ == "__main__":
runner = unittest.TextTestRunner()
runner.run(all_case())
學習過程中有遇到疑問的,可以加selenium(python+java) QQ群交流:646645429
覺得對你有幫助,就在右下角點個贊吧,感謝支持!
selenium+python高級教程》已出書:selenium webdriver基於Python源碼案例
(購買此書送對應PDF版本)
