2017-07-17 17 views
0

複数のキーワードに対して機能するステップを書く方法はありますか?複数のキーワード(例:Given、When、Then)に対応する振る舞いステップを定義します。

Scenario: Something happens after navigating 
    Given I navigate to "/" 
    And say some cookie gets set 
    When I navigate to "/some-other-page" 
    Then something happens because of that cookie 

私は両方を定義することを避けるためにしようとしている:

@given('I navigate to "{uri}"') 
    def get(context, uri): 
     current_url = BASE_URL + uri 
     context.driver.get(current_url) 

    @when('I navigate to "{uri}"') 
    def get(context, uri): 
     current_url = BASE_URL + uri 
     context.driver.get(current_url) 

を一つだけを定義し、あなたの両方がraise NotImplementedError(u'STEP:エラーが出るようにそれを使用しようとした場合と同様に、私の機能があると言います。上記の例では、ステップがシンプルであるために悪いことではありませんが、コードを繰り返すのが悪い習慣であるように思えますし、もっと複雑なもので同じことが起きる可能性もあります。 @allまたは@anyキーワード。

謝罪これはどこかで回答されているが、それはそれは質問

答えて

0

これは@stepを使用して行うことができます。例えば

Scenario: Demo how @step can be used for multiple keywords 
    Given I navigate to "/" 
    When I navigate to "/" 
    Then I navigate to "/" 

注:このfileにつながっticketからこれを考え出した

from behave import step 

@step('I navigate to "{uri}"') 
def get(context, uri): 
    current_url = BASE_URL + uri 
    context.driver.get(current_url) 

はのために動作します。

-1

あなたはこのような何かを試すことができ、このタイプのユニークな検索用語を見つけるのは難しいように検索するのは難しいことだ場合:

として、私は、「/」に移動し、いくつかのクッキーがのために働いて それから私は、「/いくつかの-他のページ」 に移動して、何かが起こるので、そのクッキーの

+0

私はそのようなことをしていますが、あなたのステップファイルで2つの異なる関数としてGivenとThen(あなたの例では)を定義しないと、 "NotImplementedError(u'STEP:"エラーが発生します。これが2回行わなければ、あなたのステップ定義はどうなっていますか? – Cynic

+0

私のために働いています。「Then」ステートメントの後ろに「And」ステートメントを書くと、2つの「Then」ステートメントとみなされます。 – user8021958

-1

そのに設定されますと言う特定のWebユーザー 私。 "Then"ステートメントの後に "And"ステートメントを書くと、2つの "Then"ステートメントとみなされます。また、u 'を指定してから括弧で囲む必要があります。

は、以下のようにしてみてください。それが判明

@given(u'I navigate to "{uri}"') 
def get(context, uri): 
    current_url = BASE_URL + uri 
    context.driver.get(current_url) 

@given(u'say some cookie gets set') 
def get(context, uri): 
    current_url = BASE_URL + uri 
    context.driver.get(current_url) 

@then(u'I navigate to "/some-other-page"') 
def step_impl(context): 
    //your code 

@then(u'something happens because of that cookie') 
def step_impl(context): 
    //your code 
+0

Yeah私が質問したところでは、あなたが '' '@given("私は "{uri}" '') '' 'と' '@when("私は "あなたは同じことを2回定義することによって、同じことをやっているだけで、あなたは '' @given(u'I navigate to "{uri}") '' 'や' ' '' @then( ''/some-other-page ''にナビゲートします) '' 'ナビゲーションコードを複製します – Cynic

関連する問題