Юнит тест Django с пользовательским бэкэндом для хранения файлов - PullRequest
0 голосов
/ 18 ноября 2018

Я пишу тестовый блок для загрузки файла теста в Django 2.x

@pytest.mark.django_db
class TestContact(TestCase):
    def test_model_add_contact(self):
        user = mixer.blend(User, is_superuser=True, username='anuj')

        contact = Contact(
            user=user,
            first_name='Anuj',
            last_name='Sharma',
            gender='m',
            date_of_birth='1996-10-19'
        )
        contact.save()
        avatar_name = tempfile.NamedTemporaryFile(suffix='.jpg').name
        contact.avatar = avatar_name
        contact.save()

        # Avatar test
        assert contact.avatar == avatar_name, 'Should return avatar path'
        assert contact.get_avatar == settings.MEDIA_URL.rstrip('/') + avatar_name, 'Should return url of avatar path'

Ранее, когда использовался бэкэнд хранилища по умолчанию, тестовый сценарий успешно проходил.

Нотеперь я использую django-storage с dropbox в качестве бэкэнда хранилища

DEFAULT_FILE_STORAGE = 'storages.backends.dropbox.DropBoxStorage'
DROPBOX_OAUTH2_TOKEN = 'access_token'
DROPBOX_ROOT_PATH = 'Koober'

Но сейчас тестовый пример не проходит

django.core.exceptions.SuspiciousFileOperation: The joined path (/tmp/tmpwzfymbqf.jpg) is located outside of the base path component (/builds/app/app-py/MyApp)

Как изменить бэкэнд хранилища в модульном тесте?

...