2016-04-25 121 views
4

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

我擁有suite函數的原因是它只包含可以從我的持續集成運行的測試,但其他失敗的測試存在於目錄中(來自較早版本的軟件包)。我也可以看到這對於選擇快速單元測試與長時間運行測試非常有用。我已經嘗試作爲腳本運行,用作nosetest或unittest配置。我試過添加if __name__ == "__main__":和其他類型的命令行運行方法,但沒有成功。

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

+0

我找到的最佳解決方法是從'tests/__ init __。py'頂部的mypkg.tests.test_one import *',然後在pycharm unittest配置中將腳本作爲腳本運行。 – daveydave400

回答

0

Pycharm的'Python Unittest'配置在後臺使用unittest.TestLoader加載測試。現在,Pycharm實際上會自動收集測試用例,但不知道如何處理TestSuite實例,甚至還有更少的函數返回這些實例。

用於您的問題解決方法是將load_tests功能添加到您的tests/__init__.py文件,如:

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

然後在pycharm配置項,選擇「腳本」,並給tests/__init__.py

load_tests函數實際上告訴測試加載程序模塊中有什麼測試:)

查看更多關於這個漂亮的技巧在這裏:https://docs.python.org/2.7/library/unittest.html#load-tests-protocol

請注意,它只適用於Python 2.7及更高版本。