我正在使用Django 4.2,我正在尝试做的是一个测试(在管理页面中登录)。因此,首先我用loaddata命令创建一个管理员(在www.example.com中fixtures.py),然后运行测试。他们都失败了。
test_admin_page.py
@pytest.mark.selenium
def test_dashboard_admin_login(live_server, db_fixture_setup, chrome_browser_instance):
browser = chrome_browser_instance
browser.get(f"{live_server.url}/admin/login/?next=/admin/")
user_name = browser.find_element(By.ID, "id_username")
user_pwd = browser.find_element(By.ID, "id_password")
submit = browser.find_element(By.XPATH,'//input[@value="Log in"]')
user_name.send_keys("admin@email.com")
user_pwd.send_keys("123admin")
submit.click()#send_keys(Keys.RETURN)
assert "Site administration" in browser.page_source # this would mean successful login
@pytest.mark.django_db
def test_admin_login(request):
user = authenticate(request, username='admin@email.com', password='123admin')
if user is not None and user.is_active and user.is_staff:
login(request, user)
assert True
else:
assert False
fixtures.py
@pytest.fixture(scope="session")
def db_fixture_setup(django_db_setup, django_db_blocker):
"""
Loads DB data fixture
"""
with django_db_blocker.unblock():
call_command("loaddata","db_admin_fixture.json")
db_admin_fixture.json
[
{ "model": "website.user",
"pk": 1,
"fields":{
"email": "admin@email.com",
"password": "123admin",
"is_superuser": true,
"is_staff": true,
"is_active": true
}
}
]
第一个Assert失败是因为页面中没有“Siteadministration”,所以它失败了。在第二个测试中,问题是用户是None,所以函数进入'else'并AssertFalse。我知道这个问题可能太笼统了,但我不知道如何更具体。这些测试失败的原因是什么?任何帮助是赞赏:)
1条答案
按热度按时间p3rjfoxz1#
好的,一个问题是密码必须被编码,它可以像这样生成:
此修复
test_dashboard_admin_login(..)
还是没有找到第二次测试的解决方案