2011-08-15 1 views
13

web.pyアプリケーションの「コントローラ」で機能テストを行うために貼り付けを使用しています。あるケースでは、不正な投稿がAPIエンドポイントに送信されたときに400応答をテストしようとしています。ここに私のテストは次のようになります。web.pyアプリケーションの貼り付けで400エラーをテストする

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 

しかし、私は次の例外を取得しています:

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

私はペーストがHttpExceptionミドルウェアを持っていますが、私が使用する方法のいずれかの例を見つけることができません参照それともそれが正しい方法であれば。助言がありますか?あるいは、私はちょうどこれについて間違っていますか?

+0

エラーをキャッチする必要があるようです。テストを 'unittest.TestCase'にし、' assertRaises'メソッドを使用してみてください:http://docs.python.org/library/unittest.html#unittest.TestCase.assertRaises –

+0

私はそれが私を助けるとは思わない私の反応をテストしてください。 self.testApp.post(...)呼び出し中に例外が発生するため、ステータスコードを確認できません –

答えて

29

私はパーティーに遅刻していることは知っていますが、私は同じ問題への答えを探していました。 TestAppが非2xx/3xxレスポンスを返すようにするには、リクエストに「エラー」を許可する必要があります。

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 

ハッピーハッキング!

関連する問題