WebDriver+RSpecで、壮絶に、受け入れテスト結果を検証する方法例

Selenium   Web Browser Automation

Selenium2 WebDriverを使ってRSpec形式で受け入れテストを自動化する方法を模索中です。

これまで調べたこと

基本的な検証方法

今回はテストケース内で値をどう検証するかを調べてみました。JUnitとかだとassertTrueみたいなメソッドが用意されていますが、画面の場合は

  • HTML内の値を見つけだし
  • その値を検証する

というステップを踏む必要があります。値を見つけ出すところは

https://gist.github.com/daipresents/b211d3a3cf47908e87f0766f846bd73d.js?file=gistfile1.txt

のようにすれば見つかります。検証方法はFireFoxのSelenium IDEを使ってテストケースを作り、それをExportしてRSpecファイルを作成した場合に自動生成されるverifyメソッドを使うといいみたいです。使い方はこんな感じ。

https://gist.github.com/daipresents/b211d3a3cf47908e87f0766f846bd73d.js?file=gistfile2.txt

呼び出されたverifyメソッド内では検証に失敗した場合(予想と違う値だった場合)に用意した配列に例外を突っ込みます。

https://gist.github.com/daipresents/b211d3a3cf47908e87f0766f846bd73d.js?file=gistfile3.txt

そしてそれぞれのテスケースが終わった後に「検証に失敗していないこと」を配列が空っぽかどうかで確認します。

https://gist.github.com/daipresents/b211d3a3cf47908e87f0766f846bd73d.js?file=gistfile4.txt

また、FireFoxのSelenium IDEは要素があるかどうかを判定してくれるelement_presentメソッドも作成してくれます。

https://gist.github.com/daipresents/b211d3a3cf47908e87f0766f846bd73d.js?file=gistfile5.txt

データを削除した時に要素が消えていることを確認するなどに使えそうです。