Django TestRunner Неправильный подсчет запросов, поврежденные данные ?? Общий беспредел

У меня возникла очень странная проблема.

У меня есть тестовый класс, который является подклассом django.test.TestCase, в котором есть около 5 различных тестов. Когда я запускаю свой полный набор тестов (с использованием носа и указанием sqlite в качестве бэкэнда), возникает ряд сбоев. Когда я иду отлаживать тесты, запуская их по отдельности, они проходят нормально.

В одном из моих тестов я получаю количество объектов перед добавлением дополнительного объекта. бывший.

test_count = TestObject.objects.all().count()
# Add an entry to TestObject
self.assertEqual(test_count + 1, TestObject.objects.all().count()) # should pass

Это сбивало с толку, что он будет работать нормально при индивидуальном запуске, но не при запуске с другими тестами. В pdb, когда я смотрю на переменные, test_count равно 1, но TestObjects.objects.all().count() равно [] после первой строки.

ipdb> test_count
1
ipdb> TestObject.objects.all()
[]
ipdb> TestObject.objects.all().count()
0

Это происходит прямо во второй строке после присвоения значения test_count, но перед добавлением другого объекта в TestObject.

Когда мой коллега проводит наши тесты, все проходит нормально.

Кто-нибудь сталкивался с подобными вещами раньше? Я пытался изменить имена переменных, я думал, может быть, где-то конфликт. У меня закончились идеи. Спасибо за помощь.


person dm03514    schedule 19.08.2011    source источник
comment
Будет ли он работать нормально, если вы удалите все TestObjects в методе tearDown() вашего TestCase?   -  person LaundroMat    schedule 21.08.2011


Ответы (1)


Согласно сообщению SO, вы видите, что TestObject.objects.all().count() возвращает два разных значения при последовательных вызовах.

Это в принципе невозможно, если туда не проникает что-то еще и что-то делает с вашей БД.

В качестве альтернативы, правильно ли ваш подкласс TestCase вызывает super(MyTestCase, self).setUp() и другие методы суперкласса, чтобы правильно настроить БД?

Малькольм

опубликовано от пользователей django

person dm03514    schedule 23.12.2011