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):
-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
?)
更多建議: