У меня проблема с моими модульными тестами и тем, как django управляет транзакциями.Тесты не выполняются с TransactionTestCase и pytest
В моем коде у меня есть функция:
def send():
autocommit = transaction.set_autocommit(False)
try:
# stuff
finally:
transaction.rollback()
transaction.set_autocommit(autocommit)
В моем тесте у меня есть:
class MyTest(TransactionTestCase):
def test_send(self):
send()
Проблема, которую я имею, что мой test_send
проходит успешно, но не 80% от моего друга тесты.
Кажется, сделка других тестов не удается
кстати я использую py.test запускать мои тесты
EDIT: Чтобы сделать вещи более ясно, когда я запускаю свои тесты только MyApp .test.test_module.py он работает нормально, и все 3 теста проходят, но когда я запускаю все свои тесты, большинство неудачных попыток, попытается создать тестовое приложение.
Также все мои тесты проходят со стандартным тестовым бегуном от django
EDIT2: Вот минимальный пример, чтобы проверить этот вопрос:
class ManagementTestCase(TransactionTestCase):
def test_transfer_ubl(self, MockExact):
pass
class TestTestCase(TestCase):
def test_1_user(self):
get_user_model().objects.get(username="admin")
self.assertEqual(get_user_model().objects.all().count(), 1)
Имейте в виду, существует datamigration, что добавляет «администратора» пользователя (TestTestCase преуспевает в одиночку, но не тогда, когда ManagmentTestCase выполняется раньше)
Кажется, autocommit не имеет к этому никакого отношения.
Откуда этот метод send()? Пожалуйста, отправьте пример теста, который терпит неудачу после того, как вы вызвали send() – e4c5
. Я написал метод отправки, другие тесты терпят неудачу, потому что когда они подсчитывают объекты в их изоляции, ломается – maazza
Извините, если мой комментарий не ясен. Является ли метод отправки частью представления? Часть тестового кода? И, пожалуйста, добавьте образец теста, который не выполняется при выполнении вместе с этим – e4c5