Specflow没有生成正确的步骤定义

时间:2017-04-06 15:04:09

标签: c# selenium selenium-webdriver bdd specflow

我正在尝试使用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             |

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

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

public void WhenIDownloadAXyzFile_()

{
   ScenarioContext.Current.Pending();
}

有人可以告诉我为什么我在步骤定义中没有得到(。*)吗?它在步骤定义中显示了第一个示例内容。

1 个答案:

答案 0 :(得分:0)

当步骤是纯文本时,例如:

When I download a xyz file

框架无法用来确定&#34; xyz&#34;是您要捕获的项目。

在它周围放置引号,让框架知道它可以在步骤定义中捕获和使用。

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 

两者是否匹配相同的东西。所以要小心。