Ответ 1
Весь ваш код работает в транзакциях базы данных, которые возвращаются в конце каждого теста.
Из Django docs:
Вот пример, какие подклассы из django.test.TestCase, который является подклассом unittest.TestCase, который запускает каждый тест внутри транзакции для обеспечения изоляции:
Эта "изоляция" означает, что все, что вы делаете внутри теста, будет откат до начала следующего теста.
Вместо этого вы хотите использовать класс Python unittest.TestCase
.
Еще одна цитата из документов Django:
Использование unittest.TestCase позволяет избежать затрат на запуск каждого теста в транзакции и очистку базы данных, но если ваши тесты взаимодействуют с базой данных, их поведение будет зависеть от того, какой порядок выполнения выполняется им. Это может привести к единичным тестам, которые проходят при запуске изолированно, но сбой при запуске в пакете.
Пока вы можете гарантировать, что ваши тесты не будут сжимать друг друга данными, вы можете безопасно использовать этот класс вместо тестового примера Django.