0

我是 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 与我在前端提供的电子邮件 ID 相同。

请问有什么建议吗?我已经花了很多时间试图找出问题所在。

4

1 回答 1

0

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

于 2013-05-13T06:27:57.980 回答