Chapter 03無料公開

環境を整える

Woo YooWaan
Woo YooWaan
2021.05.30に更新

以下の環境を構築して、テストを実行します

  • python 3.8
  • poetry (dependency management tool)

🚧 セットアップ

$ poetry init bdd-example
$ cd bdd-example
$ poetry add -D behave
$ poetry add -D PyHamcrest  # お好みで

簡単な確認をする

# コマンドラインヘルプ
$ poetry run behave --help

# 使える言語を確認する
$ poetry run behave --lang-list

📁 Feature Directory Layout

<project root>/
      features/    ... feature ファイル置き場 (Gherkin)
          steps/   ... python テストコード置き場

※ コマンドラインで実行ディレクトリを指定できるので、 ディレクトリ名は features である必要はないです。

📄 チュートリアルのファイルを用意する

チュートリアル を参考にファイルを作成します

features/
    juice.feature
    steps/
       juice_step.py

Gherkin で Feature を書く

# juice.feature
Feature: Juice

Scenario Outline: Make Juice
   Given I put <thing> ,
   When I mix
   Then it should transform into <juice>

   Examples: Fruit Set
   | thing | juice |
   | apple | apple juice |

Scenario Outline: ジュースを作る
   Given 果物を <thing> 用意します
   When 混ぜます
   Then <juice> ができました

   Examples: Fruit Set
   | thing  | juice        |
   | banana | banana juice |

python コードを書く

from behave import given, when, then

@given('I put {thing} ,')
def put_thing(context, thing):
    context.fruit = thing


@when('I mix')
def mix_it(context):
    context.juice = f'{context.fruit} juice'


@then('it should transform into {juice}')
def done_juice(context, juice):
    assert context.juice == juice


@given('果物を {thing} 用意します')
def put_thing(context, thing):
    context.fruit = thing


@when('混ぜます')
def mix_it(context):
    context.juice = f'{context.fruit} juice'


@then('{juice} ができました')
def done_juice(context, juice):
    assert context.juice == juice

次のチャプターで実際に実行などしていきます。