簡介
我們在寫用例的時候,單個腳本的用例好執(zhí)行,那么多個腳本的時候,如何批量執(zhí)行呢?這時候就需要用到 unittest 里面的 discover 方法來加載用例了。加載用例后,用 unittest 里面的 TextTestRunner 這里類的 run 方法去一次執(zhí)行多個腳
本的用例。那么前邊介紹那么多都是半道開始,半道出家,這篇就帶大家從頭到尾,一步一步給小伙伴們詳細介紹一下。
新建測試項目
1、pycharm 左上角 File>New Projetc>Pure Python,在 location 位置命名一個測試工程的名稱:honggetest
?如果你想學(xué)習(xí)接口自動化測試,我這邊給你推薦一套視頻,這個視頻可以說是B站播放全網(wǎng)第一的接口自動化測試教程,同時在線人數(shù)到達1000人,并且還有筆記可以領(lǐng)取及各路大神技術(shù)交流:798478386???
【已更新】B站講的最詳細的Python接口自動化測試實戰(zhàn)教程全集(實戰(zhàn)最新版)_嗶哩嗶哩_bilibili【已更新】B站講的最詳細的Python接口自動化測試實戰(zhàn)教程全集(實戰(zhàn)最新版)共計200條視頻,包括:1.【接口自動化】目前軟件測試的市場行情以及測試人員能力標(biāo)準(zhǔn)。、2.【接口自動化】全面熟練Requests庫以及底層方法調(diào)用邏輯、3.【接口自動化】接口自動化實戰(zhàn)及正則和JsonPath提取器的應(yīng)用等,UP主更多精彩視頻,請關(guān)注UP賬號。https://www.bilibili.com/video/BV17p4y1B77x/?spm_id_from=333.337&vd_source=488d25e59e6c5b111f7a1a1a16ecbe9a
2、然后點擊“Create”
3、選中剛才新建的工程右鍵>New>Python Package>新建一個 case 文件夾
4、重復(fù)第 3 步的操作,新建一個 case 的文件夾,在里面添加一個 baidu 和一個 blog 的文件夾,里面分別有兩個用例的腳本,如下圖所示。test_01,test_02,test_03,test_04 是我們寫用例的腳本
?
5、test_01創(chuàng)建完后,打開腳本,寫入用例,其他的可以復(fù)制即可
6、參考代碼
1 # coding:utf-8
2 import unittest
3 import time
4
5 class Test(unittest.TestCase):
6 def setUp(self):
7 print ("start!")
8 def tearDown(self):
9 time.sleep(1)
10 print ("end!")
11 def test01(self):
12 print ("執(zhí)行測試用例 01")
13 def test02(self):
14 print ("執(zhí)行測試用例 02")
15 def test03(self):
16 print ("執(zhí)行測試用例 03")
17
18 if __name__ == "__main__":
19 unittest.main()
7、在 honggetest 這個項目下面創(chuàng)建一個腳本 run_all_case.py,接下來用這個腳本去批量執(zhí)行所有的用例。
discover 加載測試用例
1、discover 方法里面有三個參數(shù):
-case_dir:這個是待執(zhí)行用例的目錄。
-pattern:這個是匹配腳本名稱的規(guī)則,test*.py 意思是匹配 test 開頭的所有腳本。
-top_level_dir:這個是頂層目錄的名稱,一般默認(rèn)等于 None 就行了。
2、discover 加載到的用例是一個 list 集合,需要重新寫入到一個 list 對象 testcase 里,這樣就可以用 unittest 里面的 TextTestRunner 這里類的 run 方法去執(zhí)行。
3、運行后結(jié)果入下,就是加載到的所有測試用例了:
參考代碼
1 # coding=utf-8
2 #1.先設(shè)置編碼,utf-8可支持中英文,如上,一般放在第一行
3
4 #2.注釋:包括記錄創(chuàng)建時間,創(chuàng)建人,項目名稱。
5 '''
6 Created on 2019-4-29
7 @author: 北京-宏哥
8 Project:學(xué)習(xí)和使用discover批量執(zhí)行測試用例
9 '''
10 #3.導(dǎo)入unittest模塊
11 import unittest
12 #4.編寫測試用例和斷言
13 def all_case():
14 # 待執(zhí)行用例的目錄
15 case_dir = "C:\\Users\\DELL\\PycharmProjects\\honggetest\\case"
16 testcase = unittest.TestSuite()
17 discover = unittest.defaultTestLoader.discover(case_dir,
18 pattern="test*.py",
19 top_level_dir=None)
20 #discover方法篩選出用例,循環(huán)添加到測試套件中
21 for test_suit in discover:
22 for test_case in test_suit:
23 #添加用力到testcase
24 testcase.addTests(test_case)
25 print(testcase)
26 return testcase
27 if __name__ == "__main__":
28 # 返回實例
29 runner = unittest.TextTestRunner()
30 # run 所有用例
31 runner.run(all_case())
run 測試用例
1、為了更方便的理解,可以把上面 discover 加載用例的方法封裝下,寫成一個函數(shù)
2、先返回 TextTestRunner()類的實例
3、調(diào)用 run 方法去執(zhí)行 all_case()這個函數(shù)
?
參考代碼
?
# coding=utf-8
#1.先設(shè)置編碼,utf-8可支持中英文,如上,一般放在第一行
#2.注釋:包括記錄創(chuàng)建時間,創(chuàng)建人,項目名稱。
'''
Created on 2019-4-29
@author: 北京-宏哥
Project:學(xué)習(xí)和使用discover批量執(zhí)行測試用例
'''
#3.導(dǎo)入unittest模塊
import unittest
#4.編寫測試用例和斷言
def all_case():
# 待執(zhí)行用例的目錄
case_dir = "C:\\Users\\DELL\\PycharmProjects\\honggetest\\case"
testcase = unittest.TestSuite()
discover = unittest.defaultTestLoader.discover(case_dir,
pattern="test*.py",
top_level_dir=None)
testcase.addTests(discover) # 直接加載 discover 可以兼容python2和3
print(testcase)
return testcase
if __name__ == "__main__":
# 返回實例
runner = unittest.TextTestRunner()
# run 所有用例
runner.run(all_case())
?
小結(jié)
1、unittest模塊中的TestLoader類有一個discover方法(Python2.7之后)discover(start_dir,?pattern='test*.py',top_level_dir=None)遞歸查找指定目錄(start_dir)及其子目錄下的全部測試模塊,將這些測試模塊放入一個TestSuite 對象并返
回。只有匹配pattern的測試文件才會被加載到TestSuite中。如果一個測試文件的名稱符合pattern,將檢查該文件是否包含 load_tests() 函數(shù),如果 load_tests() 函數(shù)存在,則由該函數(shù)負(fù)責(zé)加載本文件中的測試用例。如果不存在,就會執(zhí)行
loadTestsFromModule(),查找該文件中派生自TestCase 的類包含的 test 開頭的方法。文章來源:http://www.zghlxwxcb.cn/news/detail-544451.html
2、用例路徑另一種寫法文章來源地址http://www.zghlxwxcb.cn/news/detail-544451.html
case_dir = os.path.join(os.getcwd(), "case")
到了這里,關(guān)于python接口自動化(二十六)--批量執(zhí)行用例 discover(詳解)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!