如何获取方案名称和参数? specflow

时间:2015-02-26 12:36:34

标签: c# cucumber specflow

this问题scenario.getName用于场景名称。除了参数之外,我还需要获取名称。例如,如果方案是:

Scenario Outline: name of scenario
Given I am on the proper page
When I apply <filter>  with <params>
And I click filter
Then the data should be filtered
Examples:
| filter    | params      |
| Date      | Today       |
| Name      | Some Name   |

我想获得nameOfScenario(Date,Today)。

我也在使用C#而不是java

更新

我知道当我用NUnit打开测试用例时,它们显示为nameOfScenario(Date,Today)。任何关于Nunit如何做的想法?

3 个答案:

答案 0 :(得分:8)

随意使用TestContext.CurrentContext.Test.Name - 它肯定会帮助您获得准确的参数化场景名称。

Specflow在运行时不带参数,它是 NUnit (或其他单元测试框架)的责任。

至少可以浏览TestContext.CurrentContext.Test属性以获取参数列表。

答案 1 :(得分:6)

您可以使用ScenarioContext.Current.ScenarioInfo.Title获取当前方案的标题,但我不认为有任何方法可以获取参数的名称。

NUnit具有参数的名称,因为Specflow在设计时使用这些名称生成单元测试类,它不会在运行时从specflow中获取它们

答案 2 :(得分:0)

我不相信SpecFlow有这样做的直接支持。但是,只需稍加努力,您就可以获得所需的结果。

更改您的场景定义,如下所示:

Background:
Given parameters <filter> and <params>

Scenario Outline: name of scenario
Given I am on the proper page
When I apply <filter>  with <params>
And I click filter
Then the data should be filtered
Examples:
| filter    | params      |
| Date      | Today       |
| Name      | Some Name   |

并实现与Given parameters etc.步骤对应的步骤定义。

或者,如果您想要的只是一种区分示例的方法,即您不关心它是“日期”和“今天”,您只是想知道它是那条线而不是另一条,你可以在您的示例中添加另一列:

Scenario Outline: name of scenario
Given I am on the proper page
And I am working example number <example number>
When I apply <filter>  with <params>
And I click filter
Then the data should be filtered
Examples:
| filter    | params      | example number |
| Date      | Today       | 1              |
| Name      | Some Name   | 2              |