次のように定義されたステップがあるとします。
Then I would expect to see the following distribution for Ford
| engine | doors | color |
| 2.1L | 4 | red |
そして、テーブルを読み取り、次のようにアサートするステップ実装があります。
@then('I would expect to see the following distribution for {car_type}')
def step(context, car_type):
car = find_car_method(car_type)
for row in context.table:
for heading in row.headings:
assertEqual(getattr(car, heading),
row[heading],
"%s does not match. " % heading + \
"Found %s" % getattr(car, heading))
(このアプローチではフィールドを追加できるため、私はこのようにしていますが、車の属性をチェックする多くの用途に十分な汎用性を維持しています)。
車のオブジェクトに 4 つのドア (int として) がある場合、データ テーブルでは「4」ドア (Unicode str として) が必要なため、一致しません。
このメソッドを実装して列の名前を確認し、フィールドごとに異なる方法で処理することもできますが、新しいフィールドを追加するときに、追加する場所がもう 1 つあるため、メンテナンスが難しくなります。代わりに、ステップ データ テーブルで指定することをお勧めします。何かのようなもの:
Then I would expect to see the following distribution for Ford
| engine | doors:int | color |
| 2.1L | 4 | red |
これを達成するために使用できる同様のものはありますか (これは機能しないため)。
同じ問題を抱えているデータテーブルから作成する必要がある場合があることに注意してください。この make は、「car」オブジェクトのタイプを使用してタイプを決定しようとしても役に立ちません。その場合は None です。
ありがとうございました、
ベア