2017-08-14 2 views
0

\ testsにいくつかのテストモジュールが保存されています。私は、それらをインポートするの無限の繰り返しを経由せずに\テスト内のすべてのファイルを実行するために)(unittest.main指示する方法はありパッケージ内のすべてのテストモジュールを実行するunittest.main()

from tests.ClassTests1 import * 
from tests.ClassTests2 import * 
... 

unittest.main() 

を指定することで、メインプログラムを実行する前に、メインクラスでそれらを読み込みます上記のように?例えば。私はfrom tests import *を試しても動作しません。

EDIT:私はプログラムによる検出後、コマンドラインからの検出ではありません。

多くの感謝!

答えて

0

おかげで彼のリンクのためにジョン・ゴードンに行きます。ここでは、それは私のために働く作られたものです。

from tests.ClassTests1 import * 

# Run test cases first 
suite = unittest.TestLoader().discover('tests', pattern='ClassTests*.py') 
result = unittest.TextTestRunner(verbosity=2).run(suite) 

しかし、私はまだ少なくとも1つの試験モジュールをインポートする必要があり、それがtestsのテスト全体の階層を発見して、私はこの権利をやっている場合、私はわからないんだけど。

0

https://docs.python.org/2/library/unittest.htmlから、セクション25.3.3。テストの発見:

Unittestは簡単なテストの検出をサポートしています。テストの検出と互換性を持たせるためには、すべてのテストファイルがプロジェクトの最上位ディレクトリからインポート可能なモジュールまたはパッケージでなければなりません(つまり、ファイル名は有効な識別子でなければなりません)。

テスト検出はTestLoader.discover()で実装されていますが、コマンドラインからも使用できます。基本的なコマンドラインの使用方法は次のとおりです。

cd project_directory

python -m unittest discover

+0

私はこれを少しはっきりさせるために質問を更新しました。私はプログラムで発見した後、コマンドライン経由で発見するのではありません。 Pythonモジュール内のTestLoader.discover()の構文は何でしょうか。ありがとう! – afora377

+0

'TestLoader.discover()'は、発見されたすべてのテストを含む 'TestSuite'オブジェクトを返します。これらのテストを実行するには、返されたTestSuiteオブジェクトの '.run()'メソッドを実行します。 (これは、私の答えに掲載されたリンクの中で、すべてかなりうまく説明されています。あなたはそれを完全に読んでいましたか?) –

+0

ありがとう!それは大規模な読書であり、私はPythonには新しいです。だから私はそれがテストを発見することができたが、私が理解できないことは、輸入にどう対処するかである。これを実行するには、少なくとも1つのテストモジュールをインポートとして明示的に指定する必要があります。 'tests.ClassTests1 import *'から。私は実際にテストスイート全体を発見しているので、直感的ではありません。しかし、このインポートがなければ、コンパイルされません。私は間違って何をしていますか?ご協力ありがとうございました! – afora377

関連する問題