PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

WebUnit

WebUnitとは

WebUnit はブラウザを使用せずにウェブサイト(html/cgi)を テストするための Ruby API です。 助田さんの書かれたRubyのテストフレームワーク - RubyUnitと組み合わせて使用し、 ウェブサイト(html/cgi)のテストを自動化することができます。

HttpUnitとJUnitを使ってテストをしていたのですが、 プログラムを ruby で書いているときに、 テストを java で書くのは嫌なので、作りました。

内部で使用しているソフトウェア

WebUnit では以下のソフトウェアを使用しています。 htmlrepair/htmlsplit と html-parser は WebUnit に同梱しました。

なお、RubyUnit と NQXMLはあらかじめインストールしておく必要があります。

ダウンロードとインストール

<URL:http://xpenguin.biz/download/webunit/> から webunit-20YYMMDD-*.tar.gz をダウンロードし、適当なディレクトリに展開して、 ruby install.rb してください。

使用例

cgi 以下を httpd からアクセスできる場所へ webunit と言う名前でリンクして、 test/test_*.rb を runtest.rb などを利用して実行します。

% ln -s webunit/cgi $DOCUMENT_ROOT/tmp/webunit
% cp webunit/cgi/auth/.htpasswd /tmp
% URLBASE=http://localhost/tmp/ runtest.rb test_link.rb


require 'webunit/webunit'

# get start HTML page
url = 'test-1.html'
response = WebUnit::Response::get( url )

# test HTML page contents
assert_title( 'test-1', response )
assert_equals( 1, response.forms.size )

form = response.form

# test form of HTML page contents
assert_equals( 'ntext',     form.parameters[0].name )
assert_equals( 'npassword', form.parameters[1].name )

# execute CGI script, after setting parameters
form.parameters[0].value = "this is test"
form.parameters[1].value = '!@#$%'
response = form.submit

# test output from CGI script
assert_equals( 'result', response.title )
assert_equals( 1, response.links.size )
assert_equals( 'http://....', response.links[0] )

# read link
response = response.links[0].read

配布条件

本プログラムはフリーソフトウェアです。 GPL(the GNU GeneralPublic License)、 または、Ruby本体と同じ条件で本プログラムを再配布できます。 GPLについてはCOPYINGファイルを参照して下さい。

バグレポート

<URL:mailto:yt@xpenguin.biz>

変更履歴

20020410-alpha -> 20030121

20020330-alpha -> 20020410-alpha

20011019-alpha -> 20020330-alpha

20011019-alpha -> 20011022-alpha

20011002-alpha -> 20011019-alpha

20010919-alpha -> 20011002-alpha

20010912-alpha -> 20010919-alpha

20010714-alpha -> 20010912-alpha

20010618-alpha -> 20010714-alpha

20010611-alpha -> 20010618-alpha

20010604-alpha -> 20010611-alpha

20010521-alpha -> 20010604-alpha

20010507-alpha -> 20010521-alpha

20010330-alpha -> 20010507-alpha

20010314-alpha -> 20010330-alpha

20010223-alpha -> 20010314-alpha

20010216-alpha -> 20010223-alpha

20010215-alpha -> 20010216-alpha