2015-11-04 85 views
1

我正在致力於一個名爲CodeSpec的框架,它構建於SpecFlow之上。使用ScenarioContext我可以得到當前正在執行的場景的標題。但我也想獲得步驟定義。從SpecFlow中的場景中獲取當前步驟定義

說的情況是

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

不能在specflow的當前版本中得到這個,但在下一版本(V2)有關step text and step type will be available from the ScenarioStepContext class

信息

您可以從CI build nuget feed獲得新版本的測試版。

+0

這是一個極好的消息,什麼時候是v2版本:) –

+1

我不知道是否有發佈日程呢。但是如果你從我鏈接到上面的nuget feed中獲取它,你可以使用beta。 –

+1

'ScenarioContext.Current.StepContext.StepInfo.Text'的作品。現在答案已經過時 – Samjongenelen

1

可以找到的呼叫者姓名和呼叫方的屬性

的StackFrame幀=新的StackFrame(1);

MethodBase method = frame.GetMethod();消息= String.Format(「{0}。{1}:{2}」, method.DeclaringType.FullName,method.Name,message);

Console.WriteLine(message);

C# Method Caller

在atributes是Specflow步驟說明

2

您可以使用下面的代碼來讓你的步驟定義:

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

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