我遇到一个问题, 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语句。但是对于2nd When语句,行为解析器解析并将参数{setting}作为 USB 和{value}作为 USB2.0 。由于" to" 是一个单词,它是步骤本身的一部分,因此在解析 USB TO IGNORE 时,行为解析器会忽略来自" TO&的单词#34;
任何可能的解决方案而不省略参数中的空格? 感谢
答案 0 :(得分:0)
用引号括住步骤参数?
答案 1 :(得分: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"