无法登录Django单元测试管理员,但可以登录dev服务器?

时间:2014-05-15 19:34:33

标签: django django-admin django-testing

我面临一个奇怪的问题。我可以通过运行登录管理员 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'

1 个答案:

答案 0 :(得分:2)

您从一个新的测试数据库开始,因此您的管理员用户尚不存在。您需要在测试用例中手动创建它。

这应该有效:

from django.contrib.auth.models import User
User.objects.create_superuser('admin', 'admin@mysite.com', 'admin')