Django测试没有连接到数据库

时间:2013-05-13 03:37:38

标签: python django django-views django-authentication django-testing

我是django的新手。在我的第一个django应用程序中,我正在测试我的一个视图来检查登录。以下是我的观点:

from testprjct.testapp.forms import LoginForm_form
from django.contrib import auth

def check_login(request):

if request.method == 'POST':
    form = LoginForm_form(request.POST)
    if request.POST and form.is_valid():
        username = request.POST.get('username', '')
        password = request.POST.get('password', '')

        # I am hard-coding the credentials here just for testing
        user = auth.authenticate(username = 'test123', password = 'qwerty')
        if user is not None and user.is_active:

            auth.login(request, user)
            .....

当我运行服务器并尝试从前端登录时,此视图正常工作。但是在执行此视图的测试用例时失败。这是我对此视图的测试代码:

from testprjct.testapp.models import loginform

class ViewTests(TestCase):
def setUp(self):
    loginform.objects.create(username='test123', password='qwerty')

def test_login(self):
    response = self.client.get('/login/')
    self.assertEqual(response.status_code, 200)

    response = self.client.post('/login/', {"username": "test123", "password": "qwerty"})
    print response
    self.assertEqual(response.status_code, 302)

通过提供登录详细信息无效的消息,它始终返回200 status_code(不重定向到成功页面)。

当我在登录页面中测试忘记密码链接时,问题相同。当提供有效的电子邮件ID时,它在前端工作正常。但是从我的测试用例中它总是给我回复错误消息,即电子邮件ID没有关联的用户帐户,即使我提供的是我在前端提供的相同的电子邮件ID。

有什么建议吗?我花了很多时间来解决这个问题。

1 个答案:

答案 0 :(得分:0)

Django设置了一个新的测试数据库,因此它不会访问您现有的数据。您需要在测试本身或setUp方法中创建所需的数据。