我试图做一个单元测试验证用户url访问,目前我试图验证一个用户,但我无法这样做...
Test.py
def setUp(self):
self.user = User.objects.create_user(email='test@testmail.com', password='test_password', is_staff=True)
self.user.save()
self.client = Client()
def test_portfolio_url(self):
self.client.login(username='test@testmail.com', password='test_password')
url = reverse('portfolio')
response = self.client.get(url)
self.assertEqual(response.status_code, 200)
self.assertEqual(resolve(url).func, portfolio)
self.assertTemplateUsed(response, 'portfolio.html')
views.py
@login_required(login_url='login')
def portfolio(request, user_id=None):
if user_id and request.user.is_staff:
user = User.objects.get(id=user_id)
else:
...
return render(request, 'portfolio.html', {'portfolio': portfolio_data})
这是我在登录时应该得到的响应
2条答案
按热度按时间bvpmtnay1#
setUp()
中,您创建了一个没有用户名用户test_portfolio_url()
中,您尝试使用用户名登录,但使用电子邮件。setUp()
中,您不需要调用user.save()
-create_user()
调用已经保存了用户w46czmvw2#
有点晚了,但我发现这个问题的解决方案可能会对某些人有帮助..所以我在类中为每个需要验证用户身份的测试/视图创建了函数,在这里。
在测试中,你只需要像这样调用函数:
这里你已经设置好了用户和客户端,你可以继续例如使用response = client. get...当然你可以根据自己的喜好来改进代码,祝你好运!