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

2022-08-02 09:58 更新

3.2 版中的新功能。

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

 測(cè)試發(fā)現(xiàn),簡(jiǎn)單的說(shuō)就是unittest支持自動(dòng)匹配測(cè)試用例,這個(gè)掃描項(xiàng)目中的測(cè)試用例的過(guò)程就叫測(cè)試發(fā)現(xiàn)。

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

cd project_directory
python -m unittest discover

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

?discover?子命令具有以下選項(xiàng):

-v--verbose

詳細(xì)輸出

-s--start-directory directory

用于啟動(dòng)發(fā)現(xiàn)的目錄(默認(rèn)).

-p--pattern pattern

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

-t--top-level-directory directory

項(xiàng)目的頂級(jí)目錄(默認(rèn)為啟動(dòng)目錄)

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

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

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

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

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

如果將起始目錄作為包名稱而不是目錄的路徑提供,則 discover 會(huì)假定它從哪個(gè)位置導(dǎo)入是預(yù)期的位置,因此不會(huì)收到警告。

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

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























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

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)