MLに「FlaskでBDDやってる?」っていうスレッドが流れてて、2つのやり方が紹介されてた。僕は家庭菜園をやっている関係上、lettuceを選択せなあかんわなというわけで、あまり検討しないで、lettuceを使うことに決めた。
lettuceを使う方法
pyccuracyを使う方法
2つの違いはなんなの?ってあたりが気になるのだけどこれもsofにあった。
要するにpyccuracyはブラウザでのテストに特化しているがlettuceはもうちょっと汎用的な使い方ができる。実際にlettuceでselenium使いたい場合はlettuce_webdriverっていうプラグインみたいなのを別途導入する必要がある。
一方で、共通しているのはGherkin DSLを使っているということで、確かlettuceはcucumberのpythonポーティングだったから、そっちでググれば日本語の情報が出てくる。
lettuceを使ってみる。
featuresっていうディレクトリを作って、そこにテスト用のファイルを置く。 ディレクトリの構成はこんな感じ。
. └── features ├── steps.py └── web.feature
web.feature
featueは普通に文章を書いているようで何をしたいかがわかりやすく表現できる。
Feature: Compute factorial In order to play with Lettuce As beginners We'll access google Scenario: Filling out the query form Given I go to "http://www.google.com" When I fill in "q" with "Hello World" And I press "btnG" Then I should see "Hello World"
steps.py
stepsはモジュールの設定とか色々やるみたいなんだけど、今回はwebdriverのほうに定義されているもの しか使わないのであまり書くことがない。
from lettuce import before, world from selenium import webdriver import lettuce_webdriver.webdriver @before.all def setup_browser(): world.browser = webdriver.Firefox()
実行してみる
実行するとseleniumパワーでブラウザが立ち上がり、テストが実行され結果が端末に表示される。テスト結果はカラー表示で分かりやすい。
Spine.jsやBackbone.jsなんかのクライアントサイドMVCのテストとかにも向いてるのかな?今度調べる。