4

大規模なプロジェクトにピラミッド フレームワークを使用していますが、すべてのテストを 1 つのtests.pyファイルにまとめるのは面倒です。したがって、テストでファイルを含むディレクトリを作成することにしました。問題は、このディレクトリからテストを実行するようにピラミッドに指示する方法がわかりません。

を使用してテストを実行していますpython setup.py test -q

しかし、テストをtestsディレクトリに移動した後、これはもちろん機能しません。それを機能させるために何をすべきか?

4

3 に答える 3

5

testsまず、が単なるディレクトリではなく、その中に を作成して Python パッケージであることを確認する必要があります__init__.py

testsまた、パッケージ内のモジュールに名前を付ける必要がありますtest_something.py

ほとんどのテスト ランナーは、テスト検出の一環として、 という名前のモジュールまたはパッケージを探します。そのパッケージ内のモジュールは で始まり、(サブクラスの)テスト メソッドのメソッド名が でtests始まることを期待します。test_TestCasetest_

unittestモジュールは、テスト ランナーを次のように説明します。

テストランナーは、テストの実行を調整し、結果をユーザーに提供するコンポーネントです。ランナーは、グラフィカル インターフェイス、テキスト インターフェイスを使用するか、テストの実行結果を示す特別な値を返すことができます。

さまざまなテスト フレームワークが多数存在するため、テスト ランナーが存在します。ほとんどの場合、なんらかの方法で拡張し、サブクラスunittestを探します。unittest.TestCaseテストの実行中に、さまざまな種類のテスト検出を行ったり、結果を別の方法で提示したり、コード カバレッジを収集したりすることがあります。

相対インポートについては、これらを避けるようにしてください。コードを移動するのが難しくなり (お気づきのとおり)、インポートの可読性が低下します (どのコードがどこからインポートされるのか?)。使用するだけfrom myproject.views import my_view- 物事がどこにあるかがより明確になります

于 2012-08-27T16:45:54.350 に答える
1

私はついにそれを行う方法を見つけました。tests という名前のディレクトリを作成し、その中にテストを入れて空のファイルを作成しました__init__.py。相対インポートを修正する必要がありました。そうしないと、次のような奇妙なエラーが発生します。

AttributeError: 'module' object has no attribute 'tests'

何が起こっているのか、nosetestここでの役割はよくわかりませんが、うまくいきます。

誰かがこの問題をより深く説明できれば、それは素晴らしいことです.

于 2012-08-27T16:31:05.687 に答える
0

nose
http://nose.readthedocs.org/en/latest/を使用してみてください
。すべてのテスト ファイルが「Test」で始まる場合は、nosetestsそれらをすべて選択して実行する必要があります。

于 2012-08-27T16:25:46.757 に答える