Тестовая база данных Django не очищается автоматически

У меня есть куча файлов модульных тестов, каждый из которых состоит из классов django.test.TestCase.

Я написал небольшой сценарий оболочки, чтобы раскомментировать/комментировать импорт тестовых файлов в моем файле __init__.py, чтобы я мог запускать тесты из определенных тестовых файлов на основе аргументов командной строки, которые я ему даю. Я также могу запустить все тесты всех тестовых файлов за один раз (для целей регрессионного тестирования).

У меня есть один тестовый файл, в котором есть несколько приспособлений JSON, и первый тест проверяет, что в определенной модели/таблице есть 3 записи (определенные приспособлением JSON).

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

Когда я запускаю все тесты, база данных говорит, что в таблице/модели есть 6 записей, но их должно быть только 3 (из прибора), например, когда тестовый файл запускается сам по себе.

Я также попытался запустить этот тестовый файл с несколькими другими тестовыми файлами (не со всеми), и он проходит. Так что единственный раз, когда это не так, это когда все тестовые файлы запущены.

Мне это кажется ошибкой в ​​​​Django или PostgreSQL (БД, которую я использую), потому что Django TestCases не должны автоматически очищать / сбрасывать базу данных между каждым тестовым методом, не говоря уже о тестовом классе?


person pleasedesktop    schedule 27.02.2013    source источник
comment
Маловероятно, что это ошибка в PostgreSQL, поэтому я бы посоветовал связаться с командой Django. Судя по вашему описанию, откат, который вы ожидаете, не выполняется.   -  person Chris Travers    schedule 01.05.2013


Ответы (1)


Вероятно, это связано с разницей в том, как выполняется очистка между TestCase и TransactionTestCase в Django. До Django 1.5 TransactionTestCases нужно было запускать после TestCases (и Djangos testunner сделал это за вас). Это должно быть исправлено в 1.5, так что попробуйте снова запустить тесты там...

person Emil Stenström    schedule 03.07.2013