Я хочу, чтобы мои тесты Django создавали и изменяли медиафайлы. Итак, так же, как тесты Django делают с базами данных, я хочу настроить пустую папку MEDIA_ROOT перед запуском каждого теста.
Я решил создать временную папку и указать на нее MEDIA_ROOT. Однако я не могу понять, куда поместить код, который это делает. В этом примере специальный Runner
создан. Бегун устанавливает корень носителя и разрывает его.
К сожалению, setup_test_environment
вызывается один раз перед запуском первой тестовой функции, а не каждый раз при запуске теста.
Я попытался создать класс FileSystemTestCase
, который настраивает файловую систему в своей функции setUp
, и все мои тестовые примеры происходят от него. Хотя это работает, требуется, чтобы каждый, кто пишет тестовый пример, не забывал вызывать мой метод setUp
, так как он не вызывается автоматически.
Обычно я бы не беспокоился об этом, но цена забывания вызвать родительский метод setUp может быть очень высокой — если кто-то забудет вызов и тесты случайно запустятся на работающей системе, произойдут плохие вещи.
РЕДАКТИРОВАТЬ: временное решение, которое я нашел, состояло в том, чтобы реализовать оба моего собственного бегуна и базового TestCase
. Оба настраивают временный MEDIA_ROOT, поэтому, если кто-то забудет вызвать мой метод setUp
, тест будет запущен во временной папке предыдущего теста или в папке, настроенной исполнителем. Это может привести к сбою тестов, но не испортит живые данные.
Я надеюсь на более элегантное решение.