【问题标题】:Specflow not generating proper step definitionSpecflow 未生成正确的步骤定义
【发布时间】:2017-04-22 05:05:17
【问题描述】:

我正在尝试使用 specflow 编写一个场景,我正在下载文件并检查是否正在下载具有特定名称的文件。

Scenario Outline: Download excel files

Given I am on the Shipping

When I download a <downloadfile> file

Then I should be able to download the file.

Examples:

| downloadfile    |

| xyz             |

| abc             |

当我生成 step 文件时,我的 steps.cs 文件中会生成以下内容:

[When(@"I download a xyz file\.")]

public void WhenIDownloadAXyzFile_()

{
   ScenarioContext.Current.Pending();
}

谁能告诉我为什么我在步骤定义中没有得到 (.*) ?它显示了步骤定义中的第一个示例内容。

【问题讨论】:

  • 这真的很奇怪。我有同样的行为。一种解决方法是删除所有数据(| downloadfile | 行下方的所有数据),然后它似乎可以正常工作。生成步骤定义后重新添加数据。
  • 尝试添加单引号,即''
  • @tnw- 解决方法很好。我评论了数据并尝试生成步骤定义。谢谢你.. :)
  • @Joel- 您建议的解决方案也有效。谢谢。

标签: c# selenium selenium-webdriver bdd specflow


【解决方案1】:

当步骤为纯文本时,如:

When I download a xyz file

框架无法确定“xyz”是您要捕获的项目。

在它周围加上引号,会让框架知道它是在你的步骤定义中捕获和使用的东西。

When I download a "xyz" file

When I download a 'xyz' file

两者都会生成正确的步骤定义。在任何基于黄瓜的框架中,在步骤定义的正则表达式中使用 (.*) 都是危险的,因为匹配不明确。

例如,如果您想下载具有特定大小的文件,则在您想要的位置使用 (.*) 会混淆未来的步骤定义。

When I download a jpeg file

When I download a 500kb jpeg file 

两者都会匹配相同的东西。所以要小心。

【讨论】:

    猜你喜欢
    • 2011-07-16
    • 2014-10-15
    • 2018-09-02
    • 2016-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-10
    • 1970-01-01
    相关资源
    最近更新 更多