Lettuce Datatable

3212 ワード

MVCアプリケーションの作成を想像してみましょう.テストを作成するときに、データベースに追加する必要があるモデルがあり、これらのモデルの新しいステータスを確認する必要がある場合があります.これは、Lettuceでテストを記述する場合、ステップでデータを処理するのに非常に役立つことを意味します.手順表は次のとおりです.
Feature: bill students alphabetically
  In order to bill students properly
  As a financial specialist
  I want to bill those which name starts with some letter

  Scenario: Bill students which name starts with "G"
    Given I have the following students in my database:
      | name     | monthly_due | billed |
      | Anton    | $ 500       | no     |
      | Jack     | $ 400       | no     |
      | Gabriel  | $ 300       | no     |
      | Gloria   | $ 442.65    | no     |
      | Ken      | $ 907.86    | no     |
      | Leonard  | $ 742.84    | no     |
    When I bill names starting with "G"
    Then I see those billed students:
      | name     | monthly_due | billed |
      | Gabriel  | $ 300       | no     |
      | Gloria   | $ 442.65    | no     |
    And those that weren't:
      | name     | monthly_due | billed |
      | Anton    | $ 500       | no     |
      | Jack     | $ 400       | no     |
      | Ken      | $ 907.86    | no     |
      | Leonard  | $ 742.84    | no     |

上記の例では、3つのステップがテーブルを含む4つのステップがあります.Djangoでいくつかのステップ定義を書いて、これらのテーブルを使用することを想像してみましょう.
from lettuce import step
from school.models import Student

@step('I have the following students in my database:')
def students_in_database(step):
    for student_dict in step.hashes:
        person = Student(**student_dict)
        person.save()

テーブルの最初の行または最後の行の便利な関数を取得しますか?!
from lettuce import step
from school.models import Student

@step('I have the following students in my database:')
def students_in_database(step):
    person1 = Student(**step.hashes.first)
    person2 = Student(**step.hashes.last)

    person1.save()
    person2.save()

簡単ですね?!各ステップには、リスト辞書のハッシュ値を呼び出す属性があります.各辞書では、ヘッダーがキーで、各行の値です.言い換えれば、Lettuceはこの表を辞書伝達の第一歩に等しい.
@step('I have the following students in my database:')
def students_in_database(step):
    assert step.hashes == [
        {
            'name': 'Anton',
            'monthly_due': '$ 500',
            'billed': 'no'
        },
        {
            'name': 'Jack',
            'monthly_due': '$ 400',
            'billed': 'no'
        },
        {
            'name': 'Gabriel',
            'monthly_due': '$ 300',
            'billed': 'no'
        },
        {
            'name': 'Gloria',
            'monthly_due': '$ 442.65',
            'billed': 'no'
        },
        {
            'name': 'Ken',
            'monthly_due': '$ 907.86',
            'billed': 'no'
        },
        {
            'name': 'Leonard',
            'monthly_due': '$ 742.84',
            'billed': 'no'
        },
    ]

下一篇:Lettuce Introduction下一篇:Lettuce:Multi-line Strings