unittest 測試發(fā)現(xiàn)

2022-08-02 09:58 更新

3.2 版中的新功能。

Unittest 支持簡單的測試發(fā)現(xiàn)。為了與測試發(fā)現(xiàn)兼容,所有測試文件都必須是從項目的頂級目錄導入的模塊(包括命名空間包)(這意味著它們的文件名必須是有效的標識符)。

 測試發(fā)現(xiàn),簡單的說就是unittest支持自動匹配測試用例,這個掃描項目中的測試用例的過程就叫測試發(fā)現(xiàn)。

測試發(fā)現(xiàn)在 TestLoader.discover() 中實現(xiàn),但也可以從命令行使用?;镜拿钚杏梅ㄊ牵?/p>

cd project_directory
python -m unittest discover

注意:
作為快捷方式,?python -m unittest ?等效于? python -m unittest discover?。如果您想將參數(shù)傳遞給測試發(fā)現(xiàn),則必須顯式使用 ?discover ?子命令。

?discover?子命令具有以下選項:

-v--verbose

詳細輸出

-s--start-directory directory

用于啟動發(fā)現(xiàn)的目錄(默認).

-p--pattern pattern

匹配測試文件的模式(默認test*.py)。

-t--top-level-directory directory

項目的頂級目錄(默認為啟動目錄)

-s、-p 和 -t 選項可以作為位置參數(shù)按該順序傳入。以下兩個命令行是等效的:

python -m unittest discover -s project_directory -p "*_test.py"
python -m unittest discover project_directory "*_test.py"

除了作為路徑之外,還可以傳遞包名稱,例如?myproject.subpackage.test?,作為起始目錄。然后,將導入您提供的軟件包名稱,并將其在文件系統(tǒng)上的位置用作起始目錄。

警告
測試發(fā)現(xiàn)通過導入測試來加載測試。一旦測試發(fā)現(xiàn)從您指定的 start 目錄中找到所有測試文件,它就會將路徑轉(zhuǎn)換為要導入的包名稱。例如 foo/bar/baz.py 將導入為 foo.bar.baz

如果全局安裝了包,并嘗試在包的其他副本上進行測試發(fā)現(xiàn),則導入可能在錯誤的位置發(fā)生。如果發(fā)生這種情況,測試發(fā)現(xiàn)將警告您并退出。

如果將起始目錄作為包名稱而不是目錄的路徑提供,則 discover 會假定它從哪個位置導入是預期的位置,因此不會收到警告。

測試模塊和包可以通過load_tests協(xié)議自定義測試加載和發(fā)現(xiàn)。

版本 3.4 的更改: 測試發(fā)現(xiàn)支持起始目錄的命名空間包。請注意,您還需要指定頂級目錄(例如 ?python -m unittest discover -s root/namespace -t root?)























以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號