Тестовая база данных Django не очищается автоматически
У меня есть куча файлов модульных тестов, каждый из которых состоит из классов django.test.TestCase.
Я написал небольшой скрипт для раскомментирования / комментирования импорта тестового файла в моем файле __init__.py, чтобы я мог запускать тесты из определенных тестовых файлов на основе аргументов командной строки, которые я ему предоставляю. Я также могу запустить все тесты всех тестовых файлов за один раз (для целей регрессионного тестирования).
У меня есть один тестовый файл, в котором есть несколько приборов JSON, и первый тест проверяет, что в определенной модели / таблице содержится 3 записи (определенные в приспособлении JSON).
Итак, вот в чем проблема: когда я запускаю этот тестовый файл сам по себе, его тесты проходят с плавающими цветами, но когда я запускаю тест со всеми остальными тестами, тот конкретный тестовый случай, который я упомянул, не проходит.
Когда я запускаю все тесты, база данных говорит, что в таблице / модели есть 6 записей, но их должно быть только 3 (из прибора), например, когда тестовый файл запускается сам по себе.
Я также попытался запустить этот тестовый файл с несколькими другими тестовыми файлами (не всеми), и он прошел. Так что единственный раз, когда это не так, это когда все тестовые файлы запускаются.
Мне это кажется ошибкой в Django или PostgreSQL (я использую БД), потому что Django TestCases не должен автоматически сбрасывать / сбрасывать базу данных между каждым тестовым методом, не говоря уже о тестовом классе?
1 ответ
Вероятно, это связано с разницей в том, как выполняется очистка между TestCase и TransactionTestCase в Django. До Django 1.5 TransactionTestCases нужно было запускать после TestCases (и Djangos testunner сделал это для вас). Это должно быть исправлено в версии 1.5, поэтому попробуйте запустить тесты там снова...