繁体   English   中英

Django测试未连接到数据库

[英]Django testing not getting connected to the database

我是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没有关联的用户帐户。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM