2011-08-15 9 views
13

Estoy usando pegar para realizar algunas pruebas funcionales en mis 'controladores' en mi aplicación web.py. En un caso, estoy tratando de probar una respuesta 400 cuando se realiza una publicación mal formada en un punto final API. Esto es lo que se ve como mi prueba:Probar 400 errores con pegar en una aplicación web.py

def test_api_users_index_post_malformed(self): 
    r = self.testApp.post('/api/users', params={}) 
    assert r.header('Content-Type') == 'application/json' 
    assert r.status == 400 

Pero me estoy haciendo la siguiente excepción:

AppError: Bad response: 400 Bad Request (not 200 OK or 3xx redirect for /api/users) 

veo pasta tiene HttpException middleware, pero no puedo encontrar ejemplos de cómo utilizar o si es incluso el camino correcto a seguir. ¿Alguna sugerencia? ¿O solo estoy haciendo esto mal?

+0

Parece que necesita detectar el error. Intenta hacer la prueba como 'unittest.TestCase', y usando su método' assertRaises': http://docs.python.org/library/unittest.html#unittest.TestCase.assertRaises –

+0

No creo que eso me ayude prueba mi respuesta. La excepción se produce durante la llamada self.testApp.post (...), por lo que no puedo verificar mi código de estado –

Respuesta

29

Sé que llego tarde a la fiesta, pero me topé con esta búsqueda para encontrar la respuesta al mismo problema. Para permitir que TestApp pase respuestas que no sean 2xx/3xx, debe indicarle a la solicitud que permita "errores".

def test_api_users_index_post_malformed(self): 
    r = self.testApp.post('/api/users', params={}, expect_errors=True) 
    assert r.header('Content-Type') == 'application/json' 
    assert r.status == 400 

Happy Hacking!

Cuestiones relacionadas