kb84tkhrのブログ

何を書こうか考え中です あ、あと組織とは関係ないってやつです 個人的なやつ

PPP3: WebTestを使った機能単体テスト

ユニットテストが終わったら、コンポーネントを結合して機能をテストする

  • システム内部の関数はすべて本物を使い、外部システムと連携する部分でモックを使う
  • 疑似リクエストを扱うには、WebTestを使う
  • WSGIに則っていればほとんどのアプリをテストできる

WSGIとは、Web Server Gateway Interfaceの略で、PythonのWebアプリと
Webサーバの間のインタフェースを定義したもの
WebTestはWebサーバのふりをしてWebアプリを呼び出してレスポンスを
受け取っているというわけだな

どんなインタフェースなんだろうか
requestを引数にとってレスポンスを返すだけの関数に@wsgifyとつけると
アプリになる、ってくらい?
しかし調べないで進む

  • HTMLのレスポンスは変わりやすいので、出力されるべき文字列が含まれているかどうか程度のテストに留める
  • 外部システムの呼び出しはモックにする

ところでこのへんのサンプルコードはテスト用のアプリがないと動かないよね?
というのはLIST8.36のmock_accountってやつがどこから出てきたのかわからない
これで動くんだろうか
そのへんはちょっと明確にしておいてほしい
雰囲気がわかればいいサンプルだから適当に・・・てことはないと思うけど

  • 認証情報はenviron['REMOTE_USER']に置くことが多い
  • WebTestはクッキーにも対応しているのでセッションに関わるテストも実行可能

ここのサンプルを見るかぎり、最小のWSGIアプリはこんな感じ?
これをWSGIなWebサーバに食わせればWebアプリができるのかな?

from webob.dec import wsgify

@wsgify
def myapp(request):
    return "hello, world!"

そのうち出てくるだろうからそのときに理解しよう