簡體   English   中英

PyCharm 運行選擇單元測試

[英]PyCharm run select unittests

我有一個 python 包,其中我所有的 unittest 測試類都存儲在子包mypkg.tests模塊中。 tests/__init__.py文件中,我有一個名為suite的函數。 我通常通過調用具有test_suite='satpy.tests.suite' python setup.py test來運行這些測試。 是否可以從 pycharm 運行此測試套件?

我有套件功能的原因是它只包含准備好從我的持續集成運行的測試,但目錄中存在其他失敗的測試(來自舊版本的包)。 我還可以看到這對於選擇快速單元測試與長時間運行的測試很有用。 我試過作為腳本運行,作為鼻子測試或單元測試配置運行。 我嘗試添加if __name__ == "__main__":和其他類型的命令行運行方法,但沒有成功。

有沒有辦法只從 pycharm 運行配置運行一些測試?

Pycharm 的“Python Unittest”配置在后台使用 unittest.TestLoader 來加載測試。 現在 Pycharm 實際上嘗試自動收集測試用例,但不知道如何處理 TestSuite 實例,甚至更少的函數返回此類實例。

解決您的問題的方法是將load_tests函數添加到您的tests/__init__.py文件中,如下所示:

def load_tests(loader, tests, pattern):
    return suite()

然后在pycharm配置項中,選擇'Script'並給出tests/__init__.py

load_tests函數實際上告訴測試加載器模塊中可用的測試:)

在此處查看有關此絕妙技巧的更多信息: https : //docs.python.org/2.7/library/unittest.html#load-tests-protocol

但請注意,它僅適用於 python 2.7 及更高版本。

我發現的一件事是,在特定情況下,我的 Test 類來自在本地模塊中定義的 unittest.TestCase 的子類。 pycharm 中存在一個已知錯誤,該錯誤已存在多年,在某些情況下,例如將導入標記為未知,它有時無法完全看到您的 virtualenv 中的本地模塊。 有一種解決方法是添加該本地項目的雞蛋或其源路徑作為使用它的項目中的源。

當我為另一個錯誤執行該解決方法時,問題就消失了。 因此,由於其他問題,pycharm 機器似乎無法將我的 Test 類識別為 unittest.TestCase 。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM