如果我的功能定义中有这样的子句:
Then I can see the "/relative-url-path" page
黄瓜会施加这种方法:
@When("^I can see the \"([^\"]*)\" page$")
public void I_open_the_page(String arg1) {
// Express the Regexp above with the code you wish you had
throw new PendingException();
}
如果我想用引号突出显示URL相对部分,我怎样才能强制gherkin解析器将THEN close解释为“普通字符串”。换句话说,我可以逃避它吗?
如果我有号码,同样的问题?
答案 0 :(得分:1)
首先,如果您使用Ruby作为步骤定义,我认为在'When'前面不应该有@符号。这可能会导致您遇到问题(我不知道。)如果您不使用Ruby,那么了解您用于步骤定义的语言会很有帮助。
我可以告诉你我用引号中的文件路径做了什么:
When I upload invoice "C:\Ruby193\automation\myfile.txt"
然后我使用了这段代码:
When /^I upload invoice "(.*)"$/ do |filename|
@upload_invoice_page = UploadInvoicePage.new(@test_env)
@upload_invoice_page.upload_file(filename, 'BIRD, INC.')
end
在这个例子之后,在Ruby中我会为你的步骤尝试这个代码:
When /^ can see the "(.*)" page$/
您的代码看起来可能是Java,因此它可能类似于:
@When("^I can see the \"(.*)\" page$")
你可以在那里放置一个更复杂的正则表达式,但由于它是一个Gherkin步骤,你并不需要它。看起来你现在正试图获得任何不是双引号的东西。您不需要这样做,因为正则表达式已经在寻找一个开放和接近的报价。
请记住,你也可以完全摆脱这些引用:
Then I can see the /relative-url-path page
@When("^I can see the (.*) page$")
如果您觉得它更易于阅读,请仅保留引号。有关正则表达式的更多信息
仅匹配您要执行的数字:
Then I can see the 123456
@Then("^I can see the (\d*)$")
我发现理查德劳伦斯的Cucumber Regex Cheatsheet非常有帮助。你会发现你需要的大部分模式。如果您需要更复杂的模式,您可以考虑在步骤定义代码中进行评估是否更好。
答案 1 :(得分:0)
根据讨论,听起来你想要一个non-capturing group。这将允许您指定任何URL,但在实际步骤中完全忽略它(即它不作为参数传递)。
将?:
放在组的开头会使其成为非捕获组。
@When("^I can see the \"(?:[^\"]*)\" page$")
public void I_open_the_page() {
// Express the Regexp above with the code you wish you had
throw new PendingException();
}