2011-08-15 16 views
13

Web.py uygulamamda 'denetleyicilerim' üzerinde bazı işlev testleri yapmak için yapıştırıcı kullanıyorum. Bir durumda, bir API son noktaya hatalı biçimlendirilmiş bir yazı yapıldığında 400 yanıtı test etmeye çalışıyorum.Bir web.py uygulamasında yapıştır ile 400 hata için test etme

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 

Ama şu istisna alıyorum:: İşte böyle benim test benzediğini olduğunu

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

Ben macun HttpException katman vardır görüyorum, ama nasıl kullanılacağı hakkında herhangi örnekler bulamıyor ya da eğer gitmek için doğru yolu bile. Baska öneri? Yoksa sadece bu yanlış mı yapıyorum?

+0

Hatayı yakalamanız gerekiyor gibi görünüyor. Testi bir "unittest.TestCase" ve "assertRaises" yöntemini kullanarak deneyin: http://docs.python.org/library/unittest.html#unittest.TestCase.assertRaises –

+0

Bunun bana yardımcı olacağını sanmıyorum cevabımı test et. Özel durum self.testApp.post (...) çağrısı sırasında yükseltilir, bu yüzden durum kodumu kontrol edemiyorum –

cevap

29

Partiye gittiğimi biliyorum, ama aynı sorunun cevabını aradım. TestApp'ın 2xx/3xx yanıtlarını geri göndermesine izin vermek için, isteğin "hatalara" izin vermesi gerektiğini bildirmeniz gerekir.

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!