6

python manage.py testDjango (1.4) プロジェクトで実行しようとすると、次のエラーが表示されます。

ERROR: test_site_profile_not_available (django.contrib.auth.tests.models.ProfileTestCase)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/slacy/src/tmp/env/local/lib/python2.7/site-packages/django/contrib/auth/tests/models.py", line 29, in test_site_profile_not_available
    del settings.AUTH_PROFILE_MODULE
  File "/home/slacy/src/tmp/env/local/lib/python2.7/site-packages/django/utils/functional.py", line 215, in __delattr__
    delattr(self._wrapped, name)
AttributeError: AUTH_PROFILE_MODULE

これはDjango バグに記載されており、すべてではなく特定のアプリのみをテストすることをお勧めします。ただし、私のプロジェクトにはアプリがなく、models.py単にプロジェクトのルートに存在します。Django で特定のアプリをテストするには、次のようにします

$ ./manage.py test animals
Note that we used animals, not myproject.animals.

つまり、テストするルート ディレクトリを指定することはできません。プロジェクトディレクトリだけをテストするにはどうすればよいですか?

このバグは、単体テストの発見に関するより大きな議論の一部であることに注意してください。

4

2 に答える 2

4

django-discover-runner の使用をお勧めします。テストする完全なドット パスを指定できます。

./manage.py テストを実行すると、TEST_DISCOVER_ROOT 設定 (ファイル システム パス) の下にあるすべてのテストが検出され、実行されます。./manage.py test full.dotted.path.to.test_module を実行すると、そのモジュールでテストが実行されます (複数のモジュールを渡すこともできます)。./manage.py test myapp のようなパッケージ (Django アプリなど) への単一のドット パスを指定し、そのパッケージ自体に直接テストが含まれていない場合、そのパッケージのすべてのサブモジュールでテスト検出が行われます。

于 2012-05-20T13:25:54.020 に答える
1

apps という新しいディレクトリを作成し、アプリケーション全体をそこに移動して、settings.py、manage.py、urls.py、および django-admin.py startproject によってデフォルトで追加されるものを除いてから実行します。

./manage.py test apps

今後は、アプリケーション全体を 1 つのディレクトリに保持することは避けてください。まさにこの理由から、機能に基づいてサブアプリに分割します

于 2012-05-16T04:26:23.483 に答える