SpecFlow - Gherkin 關鍵字



主要的 Gherkin 關鍵字如下:

  • Feature (特性)
  • Scenario (場景)
  • Rule (規則) (Gherkin 6 之前)
  • Example 或 Scenario (示例或場景)
  • Background (背景)
  • Scenario Outline (場景大綱)
  • Examples (示例)
  • | 用於資料表
  • """ 用於文件字串
  • @ 用於標籤
  • # 用於註釋
  • Given (給定)
  • When (當)
  • Then (那麼)
  • But (但是)
  • And (並且)

Gherkin 使用本地化支援多種語言,以上每個關鍵字在各自的語言中都有等效的術語。

讓我們探索一些重要的 Gherkin 關鍵字:

Feature (特性)

新增 Feature 用於對應用程式功能的總體描述以及組合相關的場景。這是 Gherkin 文件中最重要的關鍵字。

Feature 後面跟著一個冒號:符號,然後是對該特性的簡短描述。我們可以新增多行以進行更詳細的描述。這些在 SpecFlow 執行時不會被考慮,但會新增到 html 報告中。

colon

完成 Feature 的描述後,我們應該用 Background、Example 等關鍵字開始新的一行。我們可以在 Feature 上方新增標籤來組合類似的 Feature,而不管檔案或目錄的結構如何。

標籤

標籤是新增到場景或特性中的標記。為特性新增標籤就像為該特性檔案中的每個場景標記該標籤一樣。標籤名稱在 @ 符號後提及。

我們可以使用標籤過濾和組合要執行的測試。例如,我們可以使用@important標記緊急測試,並經常執行它。SpecFlow 將@ignore標籤視為重要標籤,並根據帶有此標籤的場景生成一個被忽略的單元測試方法。

Tags

這裡,特性檔案包含兩個帶有@Calculator標籤的場景。這也會反映在測試資源管理器中,以便選擇要執行的測試。

Calculator Tags

Scenario (場景)

場景是一個完整的例項,描述業務邏輯。它有多個步驟。它通常被認為是關鍵字Example的同義詞。場景沒有固定的步驟數量。但建議每個場景有 3 到 5 個步驟。

如果步驟太多,它可能會失去作為規範和文件的價值。場景就像開發生命週期中的一個測試。它也可以分為前提條件、測試步驟和驗證。

Scenario

Given (給定)

Given 用於描述系統的預先存在的條件。它通常處理過去發生的事件。執行 Given 步驟時,它將設定物件、測試資料庫中的資料,並將系統置於適當的狀態。

因此,Given 步驟有助於在使用者與系統互動之前定義系統處於已知條件。我們可以有多個 Given 步驟。可以使用And關鍵字使用兩個或多個 Given 步驟。簡而言之,它用於定義前提條件。

Given

When (當)

When 是一個用於描述動作或事件的步驟。這可以是人與系統的互動,也可以是由另一個系統引起的事件。在一個場景中只有一個 When 步驟是一個好習慣。

如果我們被迫使用多個 When 步驟,我們應該理想地將場景分解成更小的場景。

When

Then (那麼)

Then 是一個用於描述預期結果的步驟。Then 步驟的相應步驟定義應該有一個斷言來驗證實際結果與預期結果是否一致。

因此,它基本上處理從測試中獲得的輸出(訊息、報告等),而不是處理系統的內部特性,例如資料庫記錄。換句話說,它用於終端使用者可以注意到的結果。

Then

But, And

如果我們重複使用 Given、When 和 Then 步驟,那麼我們可以透過用 And、But 步驟替換連續的 Given、When、Then 步驟來使場景更有條理。

But And

上面的例子顯示了 And 和 But 的用法。

* 符號

* 符號用於代替另一個步驟關鍵字。這可以用於表示專案列表的步驟。它更像是一個專案符號。對於下面的示例,出現了兩個連續的 And 步驟。

Symbol

連續的 And 步驟應該這樣表示:

Symbols

Background (背景)

有時,我們可能需要在特性檔案中的所有場景中重複相同的步驟。我們可以透過將這些步驟組合在 Background 部分下將其移到背景中。

它有助於為場景新增上下文。它可以有多個 Given 步驟。因此,它將在執行每個場景之前執行,但在任何Before hook之後。

Background 保持在第一個ExampleScenario之前,在相同的縮排級別。簡而言之,Background 用於宣告所有測試的通用步驟。

Background

在上面的示例中,有兩個場景,Background 步驟將在每個場景執行之前執行一次。

Scenario Outline (場景大綱)

Scenario Outline 用於使用不同的資料集複製相同的場景。使用不同的值編寫相同的測試既麻煩又費時。例如:

Scenarios

我們可以使用Scenario Outline組合以上兩個場景。

Scenario Outline

因此,我們看到 Scenario Outline 應該與關鍵字Examples一起使用。Scenario Outline 為 Examples 部分下方出現的每一行執行一次。

此外,我們還看到 Given 步驟有<>分隔符。它指向 Examples 表的標題。SpecFlow 將在將步驟與步驟定義匹配的任務之前將值放入此表中。

資料表

資料表用於以列表的形式將一組值傳送到步驟定義檔案。它對於處理大型資料集很有用。SpecFlow 具有豐富的 API,可在步驟定義檔案中進行表操作。

SpecFlow Assist Helpers 包用於處理表格。此外,我們還必須將名稱空間TechTalk.SpecFlow.Assist新增到我們的程式碼中。

Data Table
廣告