Cucumber Scenario Outline值含引号转义后报步骤未定义错误如何解决
可行解决方法
1. 修复Gherkin场景参数转义
你之前尝试的三重引号是Gherkin的DocString语法,仅适用于步骤内的多行文本参数,不能用于Examples表格的单元格值;双引号嵌套、双写双引号的转义规则也不符合Gherkin的标准语法,所以会触发Step未定义的错误。
Gherkin语法中Examples表格的字符串内嵌双引号,正确转义方式是**内层双引号前加反斜杠**,同时你的场景步骤里的<decTitle>也要用双引号包裹,否则正则匹配会出错。修正后的场景示例:
Feature: create a quick decision Scenario Outline: decision When I populate the "Decision Title" field with "<decTitle>" Examples: | role | decTitle | | test | testinput \"user1\" titlepart2 |
注意:Examples表的单元格内容不需要额外加外层双引号,Gherkin会自动把单元格内容识别为字符串参数。
2. 修正Step定义的正则匹配规则
你之前报step is undefined的核心原因是Step定义的正则没有匹配带特殊字符的参数,把对应的Step定义的参数匹配规则改成匹配任意字符即可,Ruby版本的Step定义示例:
When(/^I populate the "([^"]*)" field with "(.*)"$/) do |field_name, input_value| # 原有文本框输入逻辑,直接使用input_value即可,转义后的引号会自动还原 @appian_page.input_field(field_name).set(input_value) end
这里用
(.*)而不是([^"]*)匹配输入值参数,因为后者遇到双引号就会终止匹配,导致带引号的参数匹配失败。
3. 下拉菜单选择功能实现
适配Appian的FitNesse Ruby封装可以直接调用下拉框的选项选择方法,对应的Step定义示例:
When(/^I select "([^"]*)" from the "([^"]*)" dropdown$/) do |option_text, dropdown_name| @appian_page.dropdown(dropdown_name).select(option_text) end
对应的场景步骤写法示例:
When I select "Approved" from the "Decision Status" dropdown
如果下拉选项也包含双引号,和前面的文本框参数转义规则一致,内层双引号用\转义即可。
内容的提问来源于stack exchange,提问作者Jesse Barnett
相关产品推荐
相关产品推荐

