2017-06-28 7 views
0

pythonの動作は、私のパラメータの1つがステップ定義を解析しているときに問題に直面しています。ステップ文そのものの一部。ここでGherkinのステップパラメータ自体にステップの一部である文字列がある場合の対処方法

は、ステップ定義

@when(u'I set the value of {setting} to {value} in configuration') 

def **step_imp**(context, setting, value): 
print ("Setting:", setting , " Value:", value)  
pass 

Scenario: Configuration Update 
Given I can access the configuration file 
When I set the value of **CDROM Drive** to **G:** in configuration 
When I set the value of **USB TO IGNORE** to **USB2.0** in configuration 

のような私の機能のサンプルの外観は、それは最初のときのステートメントのために働くです。しかし、2番目のWhenステートメントでは、振る舞いパーサは解析し、パラメータ{setting}をUSBとし、{value}をUSB2.0とします。 "〜"は、ステップ自体の一部である単語です。USB TO IGNOREを解析すると、ビヘイビアパーサーは "TO"の単語を無視します。

パラメータ内のスペースを省略しないと、解決策はありますか? ありがとう

答えて

0

あなたのフィーチャファイルのパラメータを囲むアスタリスクの代わりに二重引用符を使用してください(また、これは 'to'を表示するのに違いがあります)。ステップファイルの中括弧の回りに二重引用符を入れ、例えば@when(u'I set the value of "{setting}" to "{value}" in configuration')。私はまたあなたがアスタリスクを**step_imp**の周りに必要と思わない。しかし、私はPythonの振る舞いに特化しています。誰もが私がやったのと同じ理由のために、ここで終わる場合


はどのようにパラメータに二重引用符をエスケープします。二重引用符の前にスラッシュ(\)を使用しているようです。私が試した最初のことでしたが、私のテストで解析エラーが発生する何かがありました。誰かがどこかでエスケープすることを明示的に言う人はいなかったので、ガチョウの追跡。

Scenario: If we enter an xss attack it should not work on another page 
    Given I am on "/example-page" 
    When I set current element to search field 
    and I send the attack "\">alert(1)" 
    Then I am on "/?s=%5C\"><%2Flabel><h1+id%3DXSS>Hello<%2Fh1><label><input+#search-form" 
    and there should not be an element with this locator "h1#XSS" 
0

ステップパラメータを引用符で囲みますか?

関連する問題