我面临一个奇怪的问题。我可以通过运行登录管理员
python manage.py runserver
并提供正确的凭据
但是我的测试失败了,如果我提供与我在开发服务器中使用的完全相同的凭据。 我正在关注TTD tutorial。
以下是代码:
class AdminTest(LiveServerTestCase):
fixtures = ['admin.json']
def setUp(self):
self.browser = webdriver.Firefox()
self.browser.maximize_window()
def tearDown(self):
self.browser.quit()
def test_admin_site(self):
# user opens web browser, navigates to admin page
self.browser.get(self.live_server_url + '/admin/')
body = self.browser.find_element_by_tag_name('body')
self.assertIn('Django administration', body.text)
# users types in username and passwords and presses enter
username_field = self.browser.find_element_by_name('username')
username_field.send_keys('admin')
password_field = self.browser.find_element_by_name('password')
password_field.send_keys('admin')
password_field.send_keys(Keys.RETURN)
time.sleep(3)
# login credentials are correct, and the user is redirected to the main admin page
body = self.browser.find_element_by_tag_name('body')
self.assertIn('Site administration', body.text)
测试失败并显示错误消息:
AssertionError: 'Site administration' not found in u'Django administration\nPlease enter the correct username and password for a staff account. Note that both fields may be case-sensitive.\nUsername:\nPassword:\n '
PS:我对Postgres
使用backend database
。我看到的所有教程都使用'sqlite3'
答案 0 :(得分:2)
您从一个新的测试数据库开始,因此您的管理员用户尚不存在。您需要在测试用例中手动创建它。
这应该有效:
from django.contrib.auth.models import User
User.objects.create_superuser('admin', 'admin@mysite.com', 'admin')