Django LiveServerTestCase, кажется, перезагружает приборы между тестами - PullRequest
0 голосов
/ 04 октября 2019

Я запускаю это с Django 2.2.5 и Postgres 11

. Похоже, что LiveServerTestCase фреймворка Django перезагружает данные приборов между каждым тестом, не удаляя предыдущие данные. Я сталкиваюсь с этим с постоянной ошибкой:

> ./manage.py test functional_tests
Creating test database for alias 'default'...
System check identified no issues (0 silenced).
.EE
======================================================================

Первый тест пройден, но последующие тесты не пройдены.

Я получаю ошибку:

django.db.utils.IntegrityError: Problem installing fixture '.../fixtures/unit_test.json': Could not load app.Configuration(pk=1): duplicate key value violates unique constraint "app_configuration_site_id_3124a87d_uniq"
DETAIL:  Key (site_id)=(1) already exists.

ЕслиЯ закомментирую и не загружаю осветители, 3 теста работают отлично.

В приборах имеется только одна запись с рассматриваемым PK. Это говорит мне, что тест перезагружает данные и дает сбой, потому что он находит существующую запись с тем же PK.

Есть ли способ сказать ему либо перезаписать данные с теми же PK, либо игнорировать (а-ляget_or_create)?

Есть ли лучшая практика для LiveServerTestCase?

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

Любое понимание приветствуется.

RB


Вот тестовая установка:

from django.contrib.staticfiles.testing import LiveServerTestCase
from selenium.webdriver.chrome.webdriver import WebDriver

class TestHeaderNavigation(LiveServerTestCase):

    fixtures = ['unit_test']

    def setUp(self):
        super().setUp()
        self.selenium = WebDriver()
        self.selenium.implicitly_wait(5)
        self.selenium.get('%s' % (self.live_server_url))

    def tearDown(self):
        super().tearDown()
        self.selenium.quit()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...