2016-04-25 13 views
4

私はすべての私のunittestテストクラスがサブパッケージmypkg.testsのモジュールに格納されているpythonパッケージを持っています。 tests/__init__.pyファイルには私はsuiteと呼ばれる機能があります。私は通常これらのテストをを持つpython setup.py testと呼んで実行します。このテストスイートをpycharmから実行することは可能ですか?PyCharm select unittests

私はスイート機能を持っている理由は、それが私の継続的な統合から実行する準備ができているだけですが、(パッケージの古いバージョンの)ディレクトリに他の失敗テストが存在するからです。私は、これが迅速なunittestsと長時間実行するテストを選択するのに役立つのを見ることもできます。私はスクリプトとして実行しようとしました、nosetestまたはunittest構成として機能します。私はif __name__ == "__main__":と他のタイプのコマンドライン実行方法を成功させずに追加しようとしました。

pycharm実行コンフィギュレーションからいくつかのテストだけを実行する方法はありますか?

+0

私が見つけた最善の回避策は、 'tests/__ init __。py'の先頭に' from mypkg.tests.test_one import * 'があり、次にpycharm unittest設定のスクリプトとしてテストを実行しています。 – daveydave400

答えて

0

Pycharmの 'Python Unittest'設定では、バックグラウンドでunittest.TestLoaderを使用してテストをロードします。現在、Pycharmは実際にテストケースを自動的に収集しようとしますが、TestSuiteのインスタンスを処理する方法、およびそのようなインスタンスを返す関数はほとんどありません。

あなたの問題を回避するには、このように、あなたのtests/__init__.pyファイルにload_tests機能を追加することです:

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以降でのみ動作します。