[CUCUMBER] HOW TO WRITE TEST CASES BY CHINESE

Jersey Su
3 min readNov 10, 2017

--

故事是這樣開始的…

前一陣子, 團隊裡面的成員們, 正在為一段 STORY ACCEPTANCE CRITIRIA 的描述進行辯論, 後來得到兩個選項

A: Then the results page displayed
B: Then I should see results page

當大家正在針對上面這兩個選項進行辯論的過程中, 突然間有一個成員舉手了, 說 :

請問一下, 如果 SCENARIOS 用中文來寫, 會如何來描述 ???

這個問題真的敲醒我, 對ㄝ, 中文的話要怎麼表達這個句子.

A : 那麼結果頁面成功顯示
B : 那麼我能夠看見結果顯示成功

於是我開始反查 CUCUMBER 裡面有沒有類似的作法, 結果發現 CUCUMBER 在約兩個月 ( 10 月左右) 前提供了 i18n (多國語系) 的支援, 範例可以在這找到 : ../cucumber-2.4.0/examples/i18n/..

於是, 小弟我就寫一個 API 測試的範例來說明吧!

STEPS

1. 在 FEATURE 檔一開始定義繁體中文

#language: zh-TW

2. FEATURE 檔寫法 :

過去我們習慣用 Feature: , 但是在 i18n 裡面我們可以用 功能: 表示.

功能:
為了避免愚蠢的錯誤
作為一個 QA 初學者
我希望有人能告訴我測試 API 結果

場景大綱: 代表 Scenario Outline:

場景大綱: 測試 API  
當我測試圖片API編號 <數值_1>
那麼我驗證回傳編號 <驗證_1>

例子: 代表 Examples:

例子:  
| 數值_1 | 驗證_1 |
| 1 | 1 |
| 2 | 2 |
| 20 | 10 |

當大功告成之後, 我們就來實作 step 檔吧 :

When /我測試圖片API編號 (\d+)/ do |op|     
@response = @req.get("photos/#{op}")
end
Then /我驗證回傳編號 (\w+)/ do |op|
json = Json_Parser.new(@response)
ids = json.get_json_values_by_key("id")
if not ids.eql? "#{op}".to_i
raise "expect id : #{op}, actual id : #{ids}"
end
end

在這裡我是引用 rest_clientjson, 這兩個 Ruby 的 PACKAGES 來處理 API 的 REQUEST 及 RESPONSE, 詳細的實作在這裡就不多做說明了.

當一切都完成後, 我們就來執行 CUCUMBER 吧!

$ cucumber

結果 :

execution results

經過這一番努力後, 得到一個結論 :

誰說中文不能寫測試案例

[Github]

後記:

美化 README, 及補上 dockerfile, 方便建立測試 image.

Originally published at jersey-su.blogspot.com.

--

--

Jersey Su

我是哲西, 熱愛測試 I am Jersey, I love Software Testing!!!