Django: изменить медиа рут для тестов - PullRequest
1 голос
/ 08 мая 2011

Я пытаюсь написать несколько тестов для приложения 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': обратная связь (последний вызов был последним) ...

Что я делаю не так?

Ответы [ 2 ]

2 голосов
/ 30 июля 2015

Не переопределять в setUp, он выполняется только перед запуском каждого метода тестирования подкласса TestCase, переопределять его в модуле перед всеми тестами.

from django.conf import settings
settings.MEDIA_ROOT += 'test'
2 голосов
/ 09 мая 2011

Вы пытались удалить setUp и посмотреть, можно ли загрузить приборы?

Кроме того, я не думаю, что вам действительно нужно изменить MEDIA_ROOT для проверки загрузки.Вы можете просто удалить эти загруженные файлы в tearDown, чтобы восстановить все.

Редактировать:

Похоже, что вы запускаете тестовый модуль в производственной среде.Честно говоря, это не очень хорошая идея.

Но если вам нужно это сделать, как насчет использования другого файла настроек?Например:

from mysite.settings import *

MEDIA_ROOT = '/what_ever_you_like'

И запустить тест с дополнительным параметром:

./manage.py test --settings=mysite.settings_for_test
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...