我想测试登录重定向,但我使用客户端发布用户名和密码,登录验证失败,我调整了很长时间。我不知道为什么!
视图:
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,但我使用brower身份验证返回不是None,我不知道为什么,一个保护机制?我必须使用client.login func?
答案 0 :(得分:0)
感谢@Daniel Roseman @ohannes
我没有为用户创建测试环境,
添加测试用户,它有效!
这是我添加的代码:
public static int p2 = 0;
public static int p1 = 0;
manage.py createsuperuser,在默认数据库中创建用户。 manage.py test创建一个新的空数据库(不包含该超级用户)。要让用户进入测试数据库,您必须在测试代码中创建它(在测试函数或setUp中) - ohannes
by ohannes