Тестовая база данных 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, поэтому попробуйте запустить тесты там снова...

Другие вопросы по тегам