SpecFlow - 鉤子



鉤子是事件繫結,用於在某些步驟新增更多自動化邏輯。例如,對於任何需要在特定場景之前執行的步驟。為了在程式碼中引入鉤子,我們必須新增[Binding]屬性。

鉤子具有全域性訪問許可權。但可以透過聲明範圍繫結使其對特性和場景可用。範圍繫結可以使用標籤進行過濾。

SpecFlow+ 執行器限制

如果我們使用 SpecFlow+ 執行器從多個執行緒執行測試,則BeforeTestRunAfterTestRun等 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。不建議依賴它,而應為各個鉤子指定順序。

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

廣告

© . All rights reserved.