如何在Django中测试PasswordChangeView?

时间:2019-08-12 16:56:38

标签: django unit-testing

我正在尝试为PasswordChangeView的get_success_url方法创建一个测试,以查看重定向是否按预期工作。

我正在寻找的预期行为(采用有效格式)是更改密码,并获得302重定向响应。

但是由于某些未知的原因,我似乎无法传递有效的表单数据,因此得到200的响应,并且测试一直失败。

有人知道为什么下面的测试给我一个无效的表格吗?我想念什么?

test.py

def test_success_url(self):
    client = Client()
    user = User.objects.create(username="anon", password="pw")
    client.force_login(user)
    data = {
      'old_password': 'pw',
      'new_password1': 'newpw',
      'new_password2': 'newpw',
    }
    response = client.post('/anon/change-password/', data)
    user.refresh_from_db()
    self.assertTrue(user.check_password('newpw))
    self.assertEqual(response, 302)

views.py

class UserPasswordChangeView(LoginRequiredMixin, PermissionMixin, PasswordChangeView):

  def get_success_url(self):
    return reverse("user:detail", kwargs={ "username": self.request.user })

1 个答案:

答案 0 :(得分:0)

您应该使用create_user创建用户对象,而不是create

user = User.objects.create_user(username="anon", password="pw")