当 Gherkin 步骤参数本身有一个字符串是步骤的一部分时如何处理这种情况

How to handle the situation when the Gherkin step parameter itself has a string which is a part of the step

我遇到一个问题,当我传递的参数之一是步骤语句本身的一部分时,python behave 解析步骤定义很奇怪。

这是步骤定义

@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

它适用于第一个 when 语句。但是对于第二个 When 语句,behave 解析器解析并给出参数 {setting} 作为 USB 和 {value} 作为 USB2.0。由于 "to" 是一个单词,它是步骤本身的一部分,因此在解析 USB TO IGNORE 时,行为解析器会忽略来自 "TO".

在不省略参数中空格的情况下有什么可能的解决方案吗? 谢谢

用引号括起您的步骤参数?

是的,只需在特征文件中的参数周围使用双引号而不是星号,并且(这就是使 '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"