Amazon.co.jpロゴ

F.Ko-Jiの「一秒後は未来」モバイル

SeleniumのテストをPHPで楽に書く [2006-10-24 00:41:31]

Seleniumのテストは次のようなテーブル要素を使って書く。

<tr>
  <td>open</td>
  <td>index.html</td>
  <td></td>
</tr>
<tr>
  <td>verifyText</td>
  <td>id=title1</td>
  <td>タイトル1</td>
</tr>
<tr>
  <td>verifyText</td>
  <td>id=title2</td>
  <td>タイトル2</td>
</tr>
<tr>
  <td>verifyText</td>
  <td>id=title3</td>
  <td>タイトル3</td>
</tr>
<tr>
  <td>clickAndWait</td>
  <td>submit</td>
  <td></td>
</tr>

これが面倒。テストが多くなってきたり長くなってきたりすると、テストを修正するメンテコストも高くなってしまう。そこで、この部分を例えばPHPで次のように書けるようにすると視認性が向上してかなり楽になる。

<?php
  $sw = new SeleniumWriter();
  $sw->open('index.html');
  $sw->verifyText('id=title1', 'タイトル1');
  $sw->verifyText('id=title2', 'タイトル2');
  $sw->verifyText('id=title3', 'タイトル3');
  $sw->clickAndWait('submit');
?>

SeleniumWriterクラスは、単純にテーブル要素を書き出してくれればよい。このクラスは例えば次のようになる。

<?php
class SeleniumWriter {
  public function __construct(){}
  public function __call($name, $params) {
    $params = array_merge((array)$name, $params);
    call_user_func_array(array($this, 'writeTest'), $params);
  }
  protected function writeTest($func, $arg1 = "", $arg2 = "") {
    echo "<tr><td>${func}</td><td>${arg1}</td><td>${arg2}</td></tr>";
  }
}
?>

このクラスを元に独自のメソッドを加えたりして拡張すると便利だ。JavaScriptで同じようなオブジェクトを作ろうとしたけどちょっとうまくいかなかった。


テスト関連の書籍

【送料無料】TOEICテスト新公式問題集

前の記事
次の記事

トップページ

[PR]美味しい梅酒が見つかるサイト

携帯アクセス解析