[英]Django test login module can't be verified?
我想測試登錄重定向,但是我使用客戶端發布的用戶名和密碼,登錄驗證失敗,我調整了很長時間。 我不知道為什么!
視圖:
def index(request, **kwargs):
username = kwargs.get('username', 'anyone')
return render(request, "index.html", {'username': username})
def login(request):
"""user sign in"""
if request.method == "GET":
form = LoginForm()
return render(request, "login.html", {'uf': form})
else:
form = LoginForm(request.POST)
if form.is_valid():
username = request.POST.get("username")
password = request.POST.get("password")
user = auth.authenticate(username=username, password=password)
if user is not None and user.is_active:
auth.login(request, user)
request.session['uid'] = user.id
return render(request, 'index.html', {'username': username})
else:
return render(request,
'login.html',
{'form': form, 'password_is_wrong': True, 'error': 'Pls, Resubmit'})
else:
return render(request, 'login.html', {'form': form})
測試:
def test_login_right(self, username='admin', password='zg123456'):
""" POST right username or password """
setup_test_environment()
client = Client(enforce_csrf_checks=False)
url = '/login/'
response = self.client.post(url,
data={'username': username,
'password': password},
secure=True,
follow=True)
status_code = response.status_code
self.assertNotIn(str(status_code)[0], ['4', '5'])
self.assertIn('Welcome', response.content.decode('utf8'))
我發現做了測試,auth.authenticate返回None,但是我使用瀏覽器authenticate返回不是None,我不知道為什么,一種保護機制?我必須使用client.login func嗎?
謝謝@丹尼爾·羅斯曼@ohannes
我沒有為用戶創建測試環境,
添加測試用戶,就可以了!
這是我添加的代碼:
from django.contrib.auth.models import User
class LoginViewsTests(TestCase):
def setUp(self):
self.adminuser = User.objects.create_user('test_001',
'test001@test.com',
'test1234')
manage.py createsuperuser,在默認數據庫中創建一個用戶。 manage.py測試將創建一個新的空數據庫(不包含該超級用戶)。 要在測試數據庫中擁有用戶,您必須在測試代碼中(在測試功能或setUp中)創建用戶-ohannes
由ohannes
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.