Drkcore

09 06 2012 Python Tweet

FlaskでBDD(ブラウザUIテストの話)

MLに「FlaskでBDDやってる?」っていうスレッドが流れてて、2つのやり方が紹介されてた。僕は家庭菜園をやっている関係上、lettuceを選択せなあかんわなというわけで、あまり検討しないで、lettuceを使うことに決めた。

lettuceを使う方法

  • lettuce
  • lettuce_webdriver
  • selenium2.0

pyccuracyを使う方法

  • pyccuracy

2つの違いはなんなの?ってあたりが気になるのだけどこれもsofにあった。

  • What are the differences between Lettuce and Pyccuracy?

要するに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パワーでブラウザが立ち上がり、テストが実行され結果が端末に表示される。テスト結果はカラー表示で分かりやすい。

lettuce webdriver

Spine.jsやBackbone.jsなんかのクライアントサイドMVCのテストとかにも向いてるのかな?今度調べる。

About

  • もう5年目(wishlistありマス♡)
  • 最近はPythonとDeepLearning
  • 日本酒自粛中
  • ドラムンベースからミニマルまで
  • ポケモンGOゆるめ

Tag

Python Deep Learning javascript chemoinformatics Emacs sake and more...

Ad

© kzfm 2003-2021