Python unittest利用discover獲取指定目錄或多級目錄下的測試用例
阿新 • • 發佈:2018-12-30
最近在寫介面自動化框架,由python+requests+unittest構建(其他還有些匯入模組,這裡暫且不說),目前還在搭建當中,整體其框架結構如下:
在編寫Common下的RunTools元件(主要封裝的是獲取測試用例、執行測試、生成測試報告、傳送郵件等相關函式) 時,遇到一些坑,在這裡進行總結:
1、利用unittest的discover獲取指定目錄下匹配的相關測試用例
封裝函式如下:
class RunTools: def chooseDirCases(self,casedir,pattern): ''' 根據指定目錄獲取匹配的測試用例 :param casedir: 測試用例目錄路徑 :param pattern: 匹配模式 :return: 測試用例集 ''' discover_cases=unittest.defaultTestLoader.discover(casedirpath,pattern=pattern) return discover_cases
例項:
runtools=RunTools() a=runtools.chooseDirCases('DL_Cases','test*.py')
tips:這種方式是可以獲取指定目錄下的匹配模式的測試用例,目錄的屬性可以是dict,也可以是python package
2、利用unittest的discover獲取多級目錄的所有測試用例
封裝函式如下:
class RunTools: def chooseAllCases(self,pattern): ''' 獲取TestCases下所有的測試用例 :param pattern: 匹配模式 :return: 測試用例集 ''' discover_all_cases=unittest.defaultTestLoader.discover(testcase_path,pattern=pattern,top_level_dir=None) #testcase_path是測試用例的根目錄 return discover_all_cases
例項:
runtools=RunTools() b=runtools.chooseAllCases('test*.py')
tip:discover是遞迴匹配檔案的,如果設定的目錄是測試用例的根目錄的話,discover會去匹配每個子目錄下的所有用例,匹配成功的用例就載入到discover,但是在這裡需要注意一點,存放用例的目錄屬性必須是python package,必須要有__init__.py,不然不會獲取成功。