behaveでステップパラメータをパース時に変換する

概要

behaveでステップの文からパラメータを読み込むときに変換処理を行う方法を記載しています。

ポイント

  • parse モジュールを使って、変換関数を定義する
  • register_type(型名=変換関数) で登録する
  • ステップの実装で {パラメータ名:型名} でステップパラメータを読み込む

コード

import parse
from behave import step, register_type, use_step_matcher
from behave.runner import Context
from pyassert import assert_that


@parse.with_pattern(r'\d+')
def parse_integer(text: str) -> int:
    return int(text)


use_step_matcher("parse")
register_type(Integer=parse_integer)


@step("ステータスコードが {status_code:Integer} である")
def step_impl(context: Context, status_code: int) -> None:
    # intに変換されていることを確認する
    assert_that(status_code).is_instance_of(int)

参考

コメントする