3

ファイルのアップロードを含む、Djangoアプリケーションのテストを作成しようとしています。MEDIA_ROOTそのために、一時的に「myproject / Fixtures /test_media/」に変更したいと思います。何らかの理由で、これによりDjangoがフィクスチャを見つけることができなくなっているようです。

私のテストケースは次のようになります

from django.conf import settings

class TestMedia(TestCase):
    fixtures = ['fixtures/test_data.json']

    def setUp(self):
        settings.MEDIA_ROOT = ''.join(
            [settings.PROJECT_PATH, '/fixtures/test_media/'])

    def test_photo_size(self):
        pass # Actually do something with the media files

何らかの理由で、Djangoはフィクスチャをロードできないため、すべてのテストが失敗します。

フィクスチャ'fixtures/ test_data.json'のインストールの問題:トレースバック(最後の最後の呼び出し)..。

私は何が間違っているのですか?

4

3 に答える 3

3

setUpを削除して、フィクスチャをロードできるかどうかを確認しようとしましたか?

また、アップロードをテストするためにMEDIA_ROOTを変更する必要はないと思います。これらのアップロードされたファイルをtearDownで削除するだけで、すべてを元に戻すことができます。

編集:

実稼働環境で単体テストを実行しているようです。正直なところ、それは良い考えではありません。

しかし、それを行う必要がある場合は、別の設定ファイルを使用してはどうでしょうか。このような:

from mysite.settings import *

MEDIA_ROOT = '/what_ever_you_like'

そして、追加のパラメーターを使用してテストを実行します。

./manage.py test --settings=mysite.settings_for_test
于 2011-05-08T20:04:19.060 に答える
3

setUp でオーバーライドせず、TestCase サブクラスの各テスト メソッドを実行する前にのみ実行し、すべてのテストの前にモジュールでオーバーライドします。

from django.conf import settings
settings.MEDIA_ROOT += 'test'
于 2015-07-30T08:48:17.567 に答える