如何在SpecFlow C#中使用MSTest註解?


我們可以在SpecFlow C#的鉤子函式中使用MSTest註解。鉤子函式是事件繫結,用於在特定步驟新增更多自動化邏輯。例如,對於任何需要在特定場景之前執行的步驟。要在程式碼中引入鉤子函式,我們必須新增[Binding]屬性。

鉤子函式具有全域性訪問許可權。但是可以透過宣告作用域繫結使其對特性和場景可用。作用域繫結可以使用標籤進行過濾。

SpecFlow+ Runner限制

如果我們使用SpecFlow+ Runner從多個執行緒執行測試,則BeforeTestRun和AfterTestRun之類的After和Before鉤子函式每個執行緒只執行一次。

鉤子屬性

鉤子屬性如下所示:

  • BeforeTestRun/AfterTestRun - 用於在完整測試執行之前/之後執行自動化邏輯。

  • BeforeFeature/AfterFeature - 用於在單個特性執行之前/之後執行自動化邏輯。

  • BeforeScenario 或 Before/AfterScenario 或 After - 用於在單個場景或場景大綱執行之前/之後執行自動化邏輯。

  • BeforeScenarioBlock/AfterScenarioBlock - 用於在單個場景塊執行之前/之後執行自動化邏輯。(在When和Given步驟之間)

  • BeforeStep/AfterStep - 用於在單個場景步驟執行之前/之後執行自動化邏輯。

鉤子執行順序

相同型別的鉤子函式,例如兩個AfterScenario鉤子函式,以隨機順序執行。要執行特定順序,我們必須在鉤子屬性中新增Order屬性。

示例

[AfterScenario(Order = 1)]
public void CloseBrowser()
{
   // we require this method to execute first...
}
[AfterScenario(Order = 2)]
public void VerifySessionIdAfterBrowserClose()
{
   // ...so we require this method to execute after the CloseBrowser
   //method is run
}

數字表示順序,這意味著數字最小的鉤子函式首先執行。如果省略數字,則預設值為10000。依賴它不是一個好習慣,最好為各個鉤子函式指定順序。

此外,如果丟擲未處理的異常,則所有後續的相同型別鉤子函式都將被跳過。為防止這種情況,我們應該處理所有異常。

更新於:2021年11月18日

516 次瀏覽

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告