Вы не пропустите функцию для тестирования.
Вы предоставляете фиктивную реализацию для чего-то, что вы не хотите запускать, как если бы это было производство.
Во-первых, вы разрабатываете для тестирования, делая S3 Uploader отдельным классом, который имеет именно тот API, который необходим вашему приложению.
Затем вы пишете фиктивную версию этого класса с тем же API. Все, что он делает, это записывает, что он был назван.
Наконец, вы убедитесь, что ваш тестовый модуль подключается к вашему фиктивному объекту вместо реального S3 Uploader.
В вашем приложении Django не должно быть никаких изменений, кроме изменений, внесенных в него модульным тестом.
Ваш views.py, который выполняет загрузку
import the_uploader
import mock_uploader
from django.conf import settings
uploadClass = eval( settings.S3_UPLOAD_CLASS_NAME )
uploader= uploadClass( ... )
Теперь вы предоставляете два settings.py
файла. По умолчанию settings.py
имеет правильное имя класса загрузчика.
Для тестирования у вас есть test_settings.py
, который выглядит следующим образом.
import settings.py
S3_UPLOAD_CLASS_NAME = "mock_uploader.mock_upload_class"
Это позволяет вам на самом деле проверить все.