如何在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。依賴它不是一個好習慣,最好為各個鉤子函式指定順序。
此外,如果丟擲未處理的異常,則所有後續的相同型別鉤子函式都將被跳過。為防止這種情況,我們應該處理所有異常。