我想一起使用pytest、pytest-django和pytest-selenium来测试我的Django应用程序的功能。如果我用python manage.py runserver手动启动服务器,并手动输入网址,它会工作得很好。
来自pytest-django的live_server fixture应该在后台启动一个我可以使用的服务器进程,但它不工作。我得到的不是通过测试,而是“请求的资源未在此服务器上找到”。
以下是我的文件的相关部分:
pytest.ini
[pytest]
DJANGO_SETTINGS_MODULE = chatsite_api.settings.test
addopts = --liveserver localhost:8080 --cov=. --cov-report=html --driver Firefoxtest_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 fixture似乎没有完成它应该做的事情。我已经验证了live_server.url是根据pytest.ini中的addopts行设置的,但这就是我所得到的。
发布于 2019-06-30 16:22:06
如果您正在使用默认的索引页面进行测试(即显示“安装成功!恭喜!”的页面)问候语),只有在使用DEBUG = True运行开发服务器时才会显示。特别是,它不会出现在测试中。如果您想使用该视图,您需要像其他视图一样在urls模块中显式配置它:
# urls.py
from django.urls import path
from django.views.debug import default_urlconf
urlpatterns = [
path('', default_urlconf, name='index'),
]https://stackoverflow.com/questions/56819782
复制相似问题