2015-02-19 3 views
2

это на Django 1.6Джанго Unit Testing Утверждайте ошибку

def test_perfil_password_validates_new_passwords(self): 
    self.client.login(username='[email protected]', password='test') 
    resp = self.client.post('/perfil/password/', 
          json.dumps({'oldpassword': 'test', 
             'newPassword1': 'wrong', 
             'newPassword2': 'nuevo'} 
             ), 
          'text/json', 
          HTTP_X_REQUESTED_WITH='XMLHttpRequest') 
    self.assertEqual(resp.status_code, 400) 

ЭТО РАБОТАЕТ и это выход:

Creating test database for alias 'default'... . 
---------------------------------------------------------------------- 
Ran 1 test in 0.273s 

OK 

Теперь, если я добавлю этот Assert

self.assertContains(resp, '"error":') 

Creating test database for alias 'default'... F 
====================================================================== 
FAIL: test_perfil_password_validates_new_passwords (users.tests.PerfilLoggedTestCase) 
---------------------------------------------------------------------- 
Traceback (most recent call last): File "/.../src/users/tests.py", 
line 141, in test_perfil_password_validates_new_passwords 
    self.assertContains(resp, '"error":') 
File "/usr/local/lib/python2.7/dist-packages/django/test/testcases.py", line 327, 
in assertContains 
    " (expected %d)" % (response.status_code, status_code)) 
AssertionError: Couldn't retrieve content: Response code was 400 (expected 200) 

---------------------------------------------------------------------- 
Ran 1 test in 0.241s 

FAILED (failures=1) 

I не знаю, почему это ожидает 200, или почему это дает мне assertionError Я могу даже распечатать контент, так что он есть. Что мне не хватает?

ответ

3

Глядя на the docs, оказывается, что утверждают, принимает соответствующий код статуса, который дефолт в 200:

TestCase.assertContains (ответ, текст, посчитайте = None, status_code = 200, msg_prefix =» », HTML = False)

Я собираюсь выйти на конечности и сказать, ваш утверждают должен выглядеть следующим образом:

self.assertContains(resp, '"error":', status_code=400) 
+0

спасибо, я все дни s имеет проблемы со скрытыми значениями по умолчанию в django ... – osueboy