一、Cucumber框架概述
Cucumber是一套行為驅動開發(BDD)的測試框架。BDD的核心思想是行為與測試用例的一一對應關係,提高業務方面與技術方面的溝通效率。Cucumber框架使用人類易於理解的Gherkin語言編寫業務場景,生成對應的測試用例腳本,執行測試並生成測試報告。
二、Cucumber框架的特點
1、通俗易懂:Cucumber使用Gherkin語言,可以讓非開發人員也能理解業務場景,增加測試人員與業務方面的溝通。
2、可維護性高:測試用例與業務場景一一對應,使得需求變更後可以快速找到對應的測試用例進行修改。
3、支持多種語言:Cucumber支持Java、Ruby等多種編程語言,靈活性強。
4、數據驅動:使用DataTable可以輕鬆實現數據驅動。
5、可擴展性強:可以使用Hooks機制對測試用例進行前置、後置處理。
三、Cucumber框架的基本使用
1. 安裝Cucumber
gem install cucumber
2. 創建.feature文件
創建features目錄,將.feature文件放入其中。文件使用Gherkin語言編寫,以下是一個簡單示例:
Feature: Search
In order to find relevant articles
As a user of the website
I'd like to be able to perform a search
Scenario: Search for relevant articles
Given I am on the homepage
When I fill in "search" with "cucumber"
And I press "search"
Then I should see "relevant articles"
3. 實現Step Definitions
將.feature文件中的Step轉化為對應的代碼實現,實現步驟在創建的step_definitions目錄下創建.rb文件,以下是一個示例:
Given(/^I am on the homepage$/) do
visit '/'
end
When(/^I fill in "(.*?)" with "(.*?)"$/) do |element, text|
fill_in element, :with => text
end
When(/^I press "(.*?)"$/) do |button|
click_button button
end
Then(/^I should see "(.*?)"$/) do |text|
page.should have_content(text)
end
4. 執行測試用例
執行測試用例時,可以通過在控制台輸入以下命令:
cucumber features/search.feature
四、Cucumber進階使用
1. 使用DataTable進行數據驅動測試
可以使用DataTable跟進feature文件中參數對應的數據進行參數化測試:
Scenario: Data-driven search
Given I have the following search terms:
| term |
| cucumber |
| automation |
| testing |
When I search for the terms
Then I should see the results
When(/^I search for the terms$/) do |table|
# 使用.each方法提取DataTable中的數據
table.hashes.each do |hash|
fill_in 'search', :with => hash['term']
click_button 'search'
end
end
Then(/^I should see the results$/) do
expect(page).to have_selector('div.results')
end
2. 使用Hooks進行測試用例前置、後置處理
可以使用Before、After Hooks進行測試用例執行之前、之後的處理,以下是一個示例:
Before do
# 執行之前的初始化操作
visit '/'
end
After do |scenario|
# 執行之後的回收操作
if scenario.failed?
save_screenshot
end
end
3. 使用Tags進行用例分類
使用Tags可以對.feature文件中的用例進行標記,可以在執行測試時選擇需要執行的標記。
@search
Feature: Search
In order to find relevant articles
As a user of the website
I'd like to be able to perform a search
@basic
Scenario: Basic search
Given I am on the homepage
When I fill in "search" with "cucumber"
And I press "search"
Then I should see "relevant articles"
@advanced
Scenario: Advanced search
Given I am on the advanced search page
When I fill in the fields
| title | Cucumber |
| author | John Doe |
| publisher | Test Pub |
| date_range | 2019 |
And I press "search"
Then I should see "relevant articles"
執行指定標記的用例:
cucumber --tags @search
原創文章,作者:XXQL,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/144109.html