1

私がどれほど混乱しているかをお見せできるかどうか見てみましょう。

変数をインラインで含むレタス機能ファイルを使用するだけで、すべてが機能します。たとえば、次の機能ファイルを作成するとします。

Feature: File Finder
    I need to just look for the presence of certain files on a system

Scenario Outline:  Verify the presence (or absence) of a file on a system
    Given I log into a system at "172.16.100.23" as user "cadmin" with password "cadmin"
    Then I can look for "/var/log/nginx.log" and know that it should "not" be there

それに対してレタスを実行すると、次の手順を作成するように指示されます。

You can implement step definitions for undefined steps with these snippets:

# -*- coding: utf-8 -*-
from lettuce import step

@step(u'Given I log into a system at "([^"]*)" as user "([^"]*)" with password "([^"]*)"')
def given_i_log_into_a_system_at_group1_as_user_group2_with_password_group2(step, group1, group2, group3):
    assert False, 'This step must be implemented'
@step(u'Then I can look for "([^"]*)" and know that it should "([^"]*)" be there')
def then_i_can_look_for_group1_and_know_that_it_should_group2_be_there(step, group1, group2):
    assert False, 'This step must be implemented'

そのヘッダー (「レタスのインポート ステップから」) とそれらのステップを filefinder.py フォルダーに貼り付け、「assert False」を「assert True」に変更してテストをパスさせると、見事にパスします。

Feature: File Finder
  I need to just look for the presence of certain files on a system

Scenario: Verify the presence (or absence) of a file on a system
  Given I log into a system at "172.16.100.23" as user "cadmin" with password "cadmin"
  Then I can look for "/var/log/nginx.log" and know that it should "not" be there

1 feature (1 passed)
1 scenario (1 passed)
2 steps (2 passed)

ここで、例のテーブルをミックスに追加したいと思います。Then I can ask <manager> for <item>3 番目のステップとして次の例の表を追加するだけです。

Examples:
    | manager   | item            |
    | "bob"     | "raise"         |
    | "suzy"    | "more switches" |
    | "bill"    | "more coffee"   |

これに対してレタスを実行すると、次のように表示されます。

You can implement step definitions for undefined steps with these snippets:

# -*- coding: utf-8 -*-
from lettuce import step

@step(u'Then I can ask <manager> for <item>')
def then_i_can_ask_manager_for_item(step):
    assert False, 'This step must be implemented'

そのため、それを filefinder.py ファイルに追加し、「assert False」を「assert True」に変更して、コンソールに緑色の色が表示されるようにします。<manager>それに対してレタスを実行すると、プレースホルダーを認識せず<item>、有効なステップを作成するかのように、まったく同じ応答が返されます。ここで説明されているようにプレースホルダーを使用している場合、要求されたステップを作成できないのはそのときだけです: http://lettuce.it/tutorial/scenario-outlines.html 例が「シナリオの概要: 階乗 [0-4]" は、[0-4] が必要かどうかわからないためです。私のテストではまったく違いがないように見えますが、例を使用した成功したテストがないため、完全に間違っている可能性があります。

私がしなければならないことは、レタスが " <placeholder>" 構文を持つステップをインラインで認識しない理由を理解することです。

誰かが私のためにこれについていくつかの光を当てることができますか?

4

1 に答える 1

4

このページに出くわしました: http://lettuce.it/intro/wtf.html適切に wtf という名前です!

私がする必要があるのは、引用符を前後に置き<placeholders>、例の表の引用符を削除することです。

今、私の機能ファイルは次のようになります。

Feature: File Finder
    I need to just look for the presence of certain files on a system

Scenario Outline:  Verify the presence of a file on a system [0-3]
    Given I log into a system at "172.16.100.23" as user "cadmin" with password "cadmin"
    Then I can look for "/var/log/nginx.log" and know that it should "not" be there
    Then I can ask "<manager>" for "<item>"

Examples:
    | manager | item          |
    | bob     | raise         |       
    | suzy    | more switches |
    | bill    | more coffee   |

そして、それは私のコンソールであらゆる種類の緑色で通過します:

Feature: File Finder
  I need to just look for the presence of certain files on a system

Scenario Outline: Verify the presence of a file on a system
  Given I log into a system at "172.16.100.23" as user "cadmin" with password "cadmin"
  Then I can look for "/var/log/nginx.log" and know that it should "not" be there
  Then I can ask "<manager>" for "<item>"

Examples:
  | manager | item          |
  | bob     | raise         |
  | suzy    | more switches |
  | bill    | more coffee   |

1 feature (1 passed)
3 scenarios (3 passed)
9 steps (9 passed)

要点...「[0-4]」は必要ありません。例を使用する場合は、「シナリオ」ではなく「シナリオ概要」を使用してください。

于 2013-02-28T20:41:55.740 に答える