Python:twillを使ったWebアプリケーションのテスト
twillによるWebサイトのテスティング
twillはコマンドラインからWebをブラウズして,フォームやクッキーを見ることができる.
また,Webサイトのテスティングの自動化やPythonからのAPIもサポートしている.
twill-sh を使う
twillを使ったWebサイトのテスティングでもっとも簡単な方法はひとつかふたつのスクリプトを用意し,以下のようにtwill-shを実行することである.
> twill-sh [ -u initial_url ] script(s)
twillはコマンドライン,cron,自作の関数やunit testプログラムから実行できる.
twil-shは与えられたスクリプトをコマンドラインインタフェース上で一度実行し,失敗したスクリプトの数を返す.exit statusが0であれば,失敗した数が0ということになる.
- u フラグは初期URL(initial url)の指定.twill-shを引数なしで実行し"go (initial url)"と実行するのと等価である.
サンプルスクリプト
slashdot.jpに自動的にログインしてみるスクリプト.スクリプトに使えるリファレンスは http://twill.idyll.org/commands.html 参照のこと.(いずれ日本語でまとめる予定)
- 以下の内容のファイルをsample_script.twillに保存する.
# slashdot.jpをブラウズ
go http://slashdot.jp/
# slashdot.jpのformタグの内容一覧
showforms
# Form#2 unickname の値をuser_nameにセット
fv 2 unickname user_name
# Form#2 upasswd の値をuser_nameにセット
fv 2 upasswd password
# nameがuserloginのsubmitを使ってPOST
submit userlogin
- 実行はシェルから.次のように実行.
> twill-sh sample_script.twill
- 出力はこんな感じ.(一部が文字化けしているけれど,それはターミナル設定の問題なのでまた後日.)
> twill-sh sample_script.twill
>> EXECUTING FILE sample_script.twill
==> at http://slashdot.jp/~~
Form #1
## ## Name Type_ ID Value__
1 phrase text (None)
2 1 None submit (None) ????´?
Form #2
## ## Name Type_ ID Value__
1 unickname text (None)
2 returnto hidden (None) http://slashdot.jp
3 op hidden (None) userlogin
4 upasswd password (None)
5 login_temp checkbox (None) [] of ['yes']
6 1 userlogin submit (None) ?????°??????
Form #3
## ## Name Type_ ID Value__
1 unickname text (None)
2 returnto hidden (None) //slashdot.jp/
3 op hidden (None) userlogin
4 upasswd password (None)
5 login_temp checkbox (None) [] of ['yes']
6 1 userlogin submit (None) ?????°??????
Form #4
## ## Name Type_ ID Value__
1 qid hidden (None) 306
2 section hidden (None) mainpage
3 aid radio (None) [] of ['1', '2', '3', '4', '5', '6', ...
4 1 None submit (None) ?????¨
Form #5
## ## Name Type_ ID Value__
1 query text (None)
2 1 None submit (None) ????´?
Note: submit is using submit button: name="userlogin", value="?????°??????"
--
1 of 1 files SUCCEEDED.
ストレステスト
twill-forkスクリプトでストレステストを実行できる.
> twill-fork -n <number to execute> -p <number of processes> script [ scripts... ]
- 例は以下のとおり.
> twill-fork -n 500 -p 10 test-script
この例では10個のプロセスでそれぞれ500回テストを実行する.この例では10個のプロセスでそれぞれ500回テストを実行する.twill-forkはすべてのスクリプトの実行時間を記録し,サマリを最後に出力する.
2007年02月12日(月) 13:01:07 Modified by dodobon