Получение live_server с работающим тестом Django - PullRequest
2 голосов
/ 29 июня 2019

Я хотел бы использовать pytest, pytest-django и pytest-selenium вместе, чтобы проверить функциональность моего приложения Django. Если я запускаю сервер вручную с python manage.py runserver и вручную ввожу URL, он работает нормально.

Устройство live_server из pytest-django должно запускать серверный процесс в фоновом режиме, который я мог бы использовать, но он не работает. Вместо прохождения теста я получаю «Запрошенный ресурс не найден на этом сервере».

Вот соответствующие разделы моих файлов:

pytest.ini

[pytest]
DJANGO_SETTINGS_MODULE = chatsite_api.settings.test
addopts = --liveserver localhost:8080  --cov=. --cov-report=html --driver Firefox

test_pages.py

import pytest

def test_homepage(selenium, live_server):
    selenium.get(live_server.url)
    assert "Django: the Web framework" in selenium.title

И chatsite_api.settings.test.py

from .dev import *  # NOQA

DATABASES = {"default": {"ENGINE": "django.db.backends.sqlite3", "NAME": ":memory:"}}

DEBUG = True

Как я уже сказал, тесты запускаются нормально, когда я сам запускаю сервер, но устройство live_server, похоже, не выполняет то, что должно. Я убедился, что live_server.url устанавливается в соответствии с строкой addopts в pytest.ini, но это насколько я понял.

1 Ответ

1 голос
/ 30 июня 2019

Если вы проводите тестирование на индексной странице по умолчанию (на странице с приветствием «Установка прошла успешно! Поздравляем!»), Она отображается только при запуске сервера разработки с DEBUG = True.В частности, он не будет присутствовать в тестах.Если вы хотите использовать представление, вам необходимо явно настроить его в модуле urls, как и другие представления:

# urls.py
from django.urls import path
from django.views.debug import default_urlconf


urlpatterns = [
    path('', default_urlconf, name='index'),
]
...