系列內容
- web自動化測試框架-01 搭建基礎架構並執行一個樣例
- web自動化測試框架-02 快速開發用例文件指令碼
- web自動化測試框架-03 介紹標籤,背景,場景,場景大綱
- web自動化系列教程- 04 Hooks與TimeOut介紹
- web自動化測試框架-05 建立資料驅動的測試用例,Doc String與Data Table
- web自動化測試框架-06 如何快速編寫自動化指令碼
備註:配合免費視訊教程,獲取更佳的學習效果!課程連結: ke.qq.com/course/2815…
主要內容
-
根據測試用例生成自動化指令碼樣例
-
測試用例與測試程式碼四種狀態
配合免費視訊教程,獲取更佳的學習效果!課程連結: https://ke.qq.com/course/281565?tuin=173f40be
根據測試用例生成自動化指令碼樣例
Cucumber是將自然語言描述的測試用例跟自動化指令碼結合起來執行的一個框架。在前面的Cucumber講座中,我們探討了如何使用行為驅動(BDD的方式來寫測試場景,設定場景的執行時。我們的基礎部分,即場景描述已經在feature檔案中實現,現在為大家介紹如何實現自動化指令碼部分。
在使用Cucumber.js預設執行方式中,我們在命令列中執行 cucumber 命令,如果Feature檔案已經有對應程式碼實現,Cucumber會自動執行這些程式碼,否則,Cucumber會自動根據feature檔案的測試步驟文字列印出對應的程式碼框架,然後使用者需要將命令列輸出的框架程式碼片段複製到自己的程式碼中。 這種Cucumber原生的操作方式使用起來略顯複雜,這裡為大家介紹一種更優雅的處理方式,就是使用我在之前教程中為大家推薦的CukeTest http://cuketest.com/ 下面一個動圖說明:
使用CukeTest,在我們編輯完測試用例之後,只需要點選灰色按鈕,自動會在js檔案中一鍵生成步驟的框架程式碼,即步驟定義。
我們要做僅僅是在生成的指令碼檔案中實現這些樣例即可。
測試用例與測試程式碼的四種狀態
Cucumber標準的操作步驟有四種狀態:
-
未定義
-
未實現
-
已經實現
-
重複實現
寫完測試用例,要為這些用例生成對應的自動化程式碼。這些測試用例與自動化指令碼的關係有如上的四種狀態,使用預設的Cucumber,只能在執行的時候才能發現這些狀態。在CukeTest編輯器中,直接提供了每個步驟的狀態顯示,方便使用者的使用。下面使用這種更直觀的視覺化介面為大家解釋。
- 未定義
有步驟文字,但是卻沒有對應的步驟定義程式碼,我們稱之為 未定義 。在CukeTest中對應為操作步驟後面按鈕為灰色狀態。
未實現
這是指實現了測試步驟,步驟定義函式返回 pendding 的狀態。 返回"pending" 表示這個函式還沒有實現。CukeTest 操作步驟中後面按鈕顏色為 橙色。
對應程式碼 為 pendding
Then(/^搜尋結果中應該包含"([^"]*)"$/, async function (arg1) {
return 'pending';});
複製程式碼
- 已經實現
即實現了操作步驟,步驟定義函式已經有具體實現。 CukeTest 操作步驟後面按鈕顏色為綠色。
對應的自動化指令碼有具體實現。
Given(/^瀏覽到搜尋網站 "([^"]*)"$/, async function(url) {
await driver.get(url);
});
複製程式碼
- 重複實現
對於某個操作步驟,有多個步驟定義函式與之對應,稱之為重複實現。 重複實現是會報錯的,因為在程式執行中不知道要匹配哪個步驟定義執行。 這裡也提醒下: 我們可以使用多個操作步驟對應某一個步驟定義函式。但是反過來不能有多個步驟定義函式對應一個操作步驟。 重複實現會在CukeTest中操作步驟後面以紅色按鈕顯示。
對應程式碼:
Then(/^搜尋結果中應該包含"([^"]*)"$/, async function (arg1) {
//do something
});
Then(/^搜尋結果中應該包含"CukeTest"$/, async function (arg1) {
//do something else
});
複製程式碼
這兩段程式碼雖然匹配表示式不相同,但是會同時匹配到上面的步驟文字。點選紅色按鈕,CukeTest會彈出對話方塊,顯示哪段程式碼有引起了重複定義,並可以讓你導航到對應的位置。
在開發過程中,指令碼的步驟可能有這4種狀態。一個已經完成的正確指令碼,應該所有狀態都是綠色的,即都已經實現。測試指令碼大了,可能有多個feature檔案,一個一個檢查會比較麻煩。CukeTest提供了一鍵檢查的機制,檢查指令碼常見的錯誤,包括JavaScript語法錯誤,上面4種狀態等,點選如下的按鈕就可以了:
獲取更多資訊,可以關注公眾號,也可以加QQ群:707467292 進行node.js自動化相關技術交流。