0

unittestを使用して、APIを使用していくつかのエッジケースをテストします。これらのケースはすべて、カスタム例外クラスを使用して400シリーズの応答コードを返します。残念ながら、これらのカスタム例外をキャッチしたり、単体テストチェック自体で応答コードを読み取ったりする方法を見つけることができないようです。

私が受け取っているのは、「AppError」例外であり、200または300ではなく400応答であるというメッセージが表示されます。可能であれば、例外メッセージの解析は避けたいと思います。これはPython2.6以降でも機能する必要があります。単体テストチェックでカスタム例外をキャッチするか、例外メッセージを解析せずにエラーの原因となっている応答コードを特定するにはどうすればよいですか?

4

2 に答える 2

1

私はこれを行う方法を考え出しました。webtest(使用されているとは言い忘れました)を使用すると、パラメーターを渡してexpect_errors=True、要求の戻り値を保存できることがわかります。次に、次のコマンドで応答ステータスを確認できます。

self.assertEqual('400 Bad Request', response.status)
于 2013-03-18T18:11:32.210 に答える
1

例外をキャッチし、それが400応答ではないことを表明する必要があります。

try:
    call_api_method()
except AppError as ae:
    self.assert(ae.errorcode < 400)

これには、エラーコードを属性として運ぶための例外が必要です。おそらく、例外で使用可能な属性を調べる必要があります。デフォルト.argsではそこにあります(タプルです)が、そのような例外にもエラーコード属性を含めることをお勧めします。

于 2013-03-18T17:25:12.117 に答える