天天看點

一分鐘認識:Cucumber架構(一)

個人感覺這個架構非常适合UI自動化測試,他不僅能把用例中的測試步驟以非常友好的形式展現出來,而且能夠非常靈活的建構場景;

一、簡介

  • Cucumber 是一個能夠了解用普通語言 描述的測試用例的行為驅動開發(BDD)的自動化測試工具,用Ruby**編寫,支援Java和·Net等多種開發語言。
  • Cucumber可以讓人們用近似自然的語言去描述Feature和場景,根據Feature驅動開發。用作軟體技術人員和非技術之間驗收測試的橋梁。它是一個指令行工具。運作後,會執行features中的内容。feature中的step會調用stepdefinitions(Ruby代碼)可以用标簽來組織場景支援40多種語言高品質內建Ruby

二、Cucumber三大組成

  • 組成

    Features、Step_definitions、Cucumber command。

結構圖

  • 對應傳統測試工具:

    Feature (功能)-------------test suite (測試用例集)

    Scenario(情景)-----------test case (測試用例)

    Given(給定)-------------setup(建立測試所需環境)

    When(當)----------------test(觸發被測事件)

    Then(則)-----------------assert(斷言,驗證結果)

  • 工作原理:

工作原理

三、Features

  • 文法規則:
  • 基于Gherkin。支援語言:# language: en (zh-CN)等
  • Features檔案必須以.features命名。
  • 包含title,多個scenarios,每個scenario包含多個step。
  • Step定義必須以關鍵字Given,When,Then,And開始。

四、Step_definitions

  • 根據feature檔案中定義的step編寫對應的測試代碼。

五、Cucumber command

  • 運作:*.feature檔案。cucumber會分析feature檔案中定義的step,然後去step - definitions尋找相比對的step,執行step中的代碼。
  • 運作結果以html的形式儲存,fail的情況檢視對應log日志

六、Cucumber的開發過程

  • 建立feature檔案,包括feature,scenarios和step。
  • 建立step_definitions,即RUBY代碼并實作。如果隻有step,沒有step definitions,會報undefined錯。Ruby寫法:Given /^the input "([^"]*)"$/ do |arg1|。運作feature,控制台中會輸出RUBY的實作方法,隻要實作step_definitions即可。
  • cucumber --format progress。格式化輸出。可修改為html,xml等格式輸出。
  • 添加斷言:
  • 一個場景失敗,Cucumber将此場景标記失敗,轉去執行下一場景。
  • 一個step失敗,會跳過這個scenario的其餘step,進而終止這個scenario。

七. Gherkin方法:

  • 關鍵字:
  • Feature

  • Background

  • Scenario

  • Scenario Outline

  • Scenarios(or Examples)

  • Given

  • When

  • Then

  • And(or But)

  • |

    (用來定義表格)
  • """

    (定義多行字元串)
  • #

    (注釋)

五、示例代碼

點選檢視[https://github.com/maxuechaogao/demo-cucumber.git]

作者:古佛青燈度流年

連結:https://www.jianshu.com/p/b934ce61c9dc

來源:簡書

著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。