Web API をもつアプリケーションのテストを、Python と requests ライブラリを使って書いています。それはよいのですが、テストが通らなかったときですよ。酔ってますよ、もう、休日に仕事してぜんぜんはかどらなくて。それと、これとは別ですけど。
アプリケーションが Python で書かれていない場合、開発者が Python 環境を自由に使えない場合があります。テストのレポートを再現するためだけに、Python モジュールをインストールしてもらうのも気が引けます。
というわけで、requests を使ったアクセスを、 curl で再現するように hooks に追加することにしました。最初から curl 使えよとか、いろいろあると思いますが、すでにレイヤをまたいで requests 使ってたもので。
import curledrequests as requests requests.debug = True requests.post('http://example.com/', auth=("foo", "bar"), data={"hoge":"moge"})
のように書くと、
$ curl http://example.com/ -u 'foo:bar' -w '\n%{http_code}\n' ... ここに body が入る ... 200
と表示されます。これを Web API 開発者に渡して、再現してもらうことができます。gist においてあります。