0
請幫助修復授權的單元測試。如何編寫授權測試?
views.py:
from django.http import HttpResponse, HttpResponseRedirect, Http404
from django.template import loader, RequestContext
from django.contrib import auth
from django import forms
def auth_view(request):
username = request.POST.get('username', '')
password = request.POST.get('password', '')
user = auth.authenticate(username=username, password=password)
if user is not None:
auth.login(request, user)
return HttpResponseRedirect('/accounts/loggedin/')
else:
return HttpResponseRedirect('/accounts/invalid_login/')
的login.html:
{% extends "base.html" %}
{% block title %}Login{% endblock %}
{% block content %}
{# {{ form.as_p }} #}
{% if form.errors %}
<p>errors!</p>
{% endif %}
<form action="/accounts/auth/" method="post">{% csrf_token %}
<input type="text" name="username" id="isername" value="" />
<input type="password" name="password" id="password" value="" />
<input type="submit" value="login" />
</form>
{% endblock %}
urls.py:
from django.conf.urls import patterns, include, url
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
from django.contrib import admin
from django.conf import settings
admin.autodiscover()
urlpatterns = patterns('accounts',
url(r'^login/$', 'views.login'),
url(r'^auth/$', 'views.auth_view'),
)
tests.py:
from django.test import TestCase
from django.test.client import Client
class TestLogin(TestCase):
def test_login(self):
client = Client()
response = client.post('/accounts/auth/', {'username': 'qwe', 'password': 'qwe'})
print(response.content)
self.assertEqual(response.status_code, 302)
我正在做2個測試:一個用於現有用戶(用戶名:qwe,密碼:qwe),2用於不存在的用戶(用戶名:qwerty,密碼:qwe)。由於控制檯顯示相同的message。
,所以我不知道成功與否授權
您是否使用該密碼創建了用戶?在提出請求之前,用戶必須存在於測試數據庫中。 –
對於這兩種情況,您都會返回完全相同的響應。您應該返回不同類型的響應或測試'response'對象的內容 – yorodm