Django: Все последующие тесты завершаются неудачно после неудачного одного теста - PullRequest
1 голос
/ 26 мая 2020

Недавно я перешел с Python 2.7 на Python 3.8. При запуске тестов возникает новое странное явление, которое можно воспроизвести на этом простом примере:

from django.test import TestCase
from users.models import User


class TestWTF(TestCase):
    def setUp(self):
        self.user = User.objects.create(email='admin@project.com')

    def test_failure(self):
        self.assertTrue(False)

    def test_success(self):
        pass

Когда test_failure() не удается, объект self.user не удаляется из БД. Похоже, что обещанной функции отката просто не происходит. test_success() и все последующие тесты в том же классе завершатся ошибкой с нарушением ограничения UNIQUE, когда setUp() попытается снова создать объект.

Этого не происходит в Python 2.

Частичный вывод из pytest Я использую:

$ pytest -W ignore -s
================================================= test session starts ==================================================
platform linux -- Python 3.8.2, pytest-5.4.1, py-1.8.1, pluggy-0.13.1
django: settings: project_sites.settings.tests (from ini)
rootdir: /home/emes/devel/project/project, inifile: pytest.ini
plugins: django-3.8.0, env-0.6.2, case-1.5.3, cov-2.8.1
collected 2 items
[...]
=============================================== short test summary info ================================================
FAILED deals/tests/test_wtf.py::TestWTF::test_failure - AssertionError: False is not true
FAILED deals/tests/test_wtf.py::TestWTF::test_success - django.db.utils.IntegrityError: UNIQUE constraint failed: use...
================================================== 2 failed in 22.76s ==================================================

редактировать: Я использую Django -1.11.26

1 Ответ

0 голосов
/ 02 июля 2020

У меня была такая же проблема с Django 2.2 на Python 3.6.

Я использовал pytest 5.4.1 и pytest- django 3.8.0.

Обновление pytest - django до версии 3.9.0 устранило проблему, поэтому я считаю, что это проблема в 3.8.0.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...