個人感覺這個框架非常適合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)
-
|
(用來定義表格) -
"""
(定義多行字符串) -
#
(注釋)