Я запускаю это с 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()