从SpecFlow中的Scenario获取当前步骤定义

时间:2015-11-04 10:52:02

标签: c# specflow

我正在为一个名为CodeSpec的框架做出贡献,它建立在SpecFlow之上。

使用ScenarioContext我可以获得当前正在执行的场景的标题。但我也希望得到步骤定义。

说方案是

Scenario: Google for Cats
Given I navigate to "http://google.com"
And I enter value "Cats" to the "searchBox" with the "id" of "lst-ib"
And I click on element "searchButton" with the "xpath" of "id('sblsbb')/button" and wait "4" seconds
Then The page contains text pattern "The domestic cat is"

我可以使用以下代码获得标题,

[AfterScenario("UIAutomationReport")]
public static void AfterScenario()
{
    var title = ScenarioContext.Current.ScenarioInfo.Title;
   //title now is "Google for Cats"

}

我想得到步骤定义 Given I navigate to "http://google.com"And I enter value "Cats" to the "searchBox" with the "id" of "lst-ib"

我该怎么做?

3 个答案:

答案 0 :(得分:3)

您无法在当前版本的specflow中获得此功能,但在下一版本(v2)中有关step text and step type will be available from the ScenarioStepContext class的信息

您可以从CI build nuget feed获得新版本的测试版。

答案 1 :(得分:2)

您可以使用以下代码来获取步骤定义:

String title = ScenarioContext.Current.StepContext.StepInfo.Text; 

Console.WriteLine("Step Definition Title : " + title);

答案 2 :(得分:1)

您可以找到来电者的来电者姓名和属性

StackFrame frame = new StackFrame(1);

MethodBase方法= frame.GetMethod();

message = String.Format(" {0}。{1}:{2}", method.DeclaringType.FullName,method.Name,message);

Console.WriteLine(消息);

请参阅 C# Method Caller

在属性中是Specflow步骤描述