2015-10-05 51 views
0

需要幫助的時候想創建爲後續代碼測試:創建如何測試方法的類內

在這裏,如果你嘗試更改驗證密碼的長度,並希望兩個測試,其中通過new_password1蒙山LEN> = 5和len < 5.

#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") 

這是我的測試,但不知道怎麼嘲弄密碼1和分配cumstom字以後做一個斷言。

#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 

回答

0

這是我的測試工作,如果任何人都可以輸入有助於我將不勝感激

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()