【问题标题】:How test method inside the class类内部如何测试方法
【发布时间】:2015-10-05 21:43:02
【问题描述】:

需要为以下代码创建测试时需要帮助:

这里验证的密​​码长度如果您尝试更改,并希望创建两个测试,其中通过 new_password1 whith len >= 5 和 len

#forms.py
     class ValidatingPasswordChangeForm(auth.forms.PasswordChangeForm):
            def clean_new_password1(self):
                    password1 = self.cleaned_data.get('new_password1')
                    if len(password1) < 5:
                        raise forms.ValidationError("La contraseña debe tener 5 caracteres o más.")
                    return password1


#url.py
url(r'^password_change/$', 'django.contrib.auth.views.password_change',
        {'template_name': 'interface/change_password.html',
         'password_change_form': forms.ValidatingPasswordChangeForm,
         'post_change_redirect': views.success_password}, name="password_change")

这是我的测试,但不知道如何模拟 password1 并分配一个自定义词以供以后进行断言。

#test
    def test_len_password_true(self):
            mock_password = mock.MagicMock()
            mock_self = mock.MagicMock({'cleaned_data':'changos'})
            with mock.patch.multiple('interface.forms.ValidatingPasswordChangeForm.clean_new_password1', password1="cosa" ):
                from interface.forms import ValidatingPasswordChangeForm
                ValidatingPasswordChangeForm().clean_new_password1(mock_self)
                #context = mock_self.call_args[0][3]
                #print context

【问题讨论】:

    标签: python django unit-testing tdd


    【解决方案1】:

    这是我的测试和作品,如果有人可以提供意见,我将不胜感激

    class test_password(unittest.TestCase):
        """ Contiene los test para la funcionalidad de contraseña.
        """
        def test_success_password(self):
            mock_render = mock.MagicMock()
            mock_request = mock.MagicMock()
            with mock.patch.multiple('interface.views', render=mock_render):
                from interface.views import success_password
                success_password(mock_request)
                context = mock_render.call_args[0][2]
                self.assertEqual(context['message']['data'],
                                 'Cambio exitoso de contrase\xc3\xb1a')
    
        def test_len_password_true(self):
            """llamado al método de validación debe devolver la misma
            contraseña.
            """
            mock_auth_form = mock.MagicMock()
            from interface.forms import ValidatingPasswordChangeForm
            form = ValidatingPasswordChangeForm(mock_auth_form)
            form.cleaned_data = {'new_password1': 'hola5'}
            self.assertEquals(form.clean_new_password1(), 'hola5')
    
        def test_len_password_error(self):
            """llamado al método de validación con una contraseña, de menos de 5
            caracteres, debe levantar un error de validación.
            """
            mock_auth_form = mock.MagicMock()
            from interface.forms import ValidatingPasswordChangeForm
            form = ValidatingPasswordChangeForm(mock_auth_form)
            form.cleaned_data = {'new_password1': 'hol4'}
            with self.assertRaises(forms.ValidationError):
                form.clean_new_password1()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-22
      • 1970-01-01
      • 1970-01-01
      • 2011-09-26
      • 2010-11-01
      相关资源
      最近更新 更多