Django 2.0-登录测试的KeyError

时间:2018-06-22 10:17:36

标签: python django django-unittest

我在测试Django应用程序时遇到一些问题。我有一个视图,该视图从登录表单获取信息,然后验证/认证用户,因此将其重定向到显示各种信息的主视图。我还放置了一个控件,以便当用户未登录时,他尝试插入URL“ / home”时,会将其重定向到显示错误模板的错误页面视图。

这是getLogin视图,在提交“ login.html”页面中的表单时调用。我不会显示showLoginTemplate视图,因为它基本上只是这样做。

def getLogin(request):
if request.user.is_authenticated:
    ...
    # operations and context creation
    ...
    return render(request, 'myapp:home', context)
else:
    if request.method == "POST":
        email = request.POST['mail']
        password = request.POST['psw']
        user = authenticate(request, username=email, password=password)
        if user is not None:
            auth_login(request, user) #the Django login renamed as auth_login
            ...
            # operations and context creation
            ...
            return redirect("/home", context)
        else:
            return redirect('/login/error', errorLogin='error')
            # shows the same page but with a login error message
    else:
        return redirect("myapp:errorpage")

主视图:

def home(request):
   if request.user.is_authenticated:
       # operations and context creation
       return render(request, 'users/home.html', context)
   else:
       return redirect("myapp:errorpage")
       #goes into a error page

这是我正在尝试的测试

    def testHomeWithLogin(self):
       user = User.objects.create(username="qwerty@gmail.com", 
              email="qwerty@gmail.com", password="qwerty")
       print(user.username)
       response = self.client.post("/login/#", {
        "mail": "qwerty@gmail.com", "psw": "qwerty"
       })
       print(response.context["mail"])

我在最后一行收到“ KeyError”:'mail'“,就像它没有获取帖子数据一样。 我在视图中做错了还是测试?

0 个答案:

没有答案