前言
上一篇介紹了Katalon
的基礎用法,本篇繼續介紹一些進階的用法。
Keyword 和 Method Call Statement
Keyword
Keyword
就是自定義方法,該方法在當前項目下公共可用(當然,也可以將文件考到別的項目中進行復用),而Method Call Statement
則更多的是用在局部定義的方法的調用上。
在項目的Keywords
目錄下,創建my.test.kits
包,並創建TestUtilities.groovy
類,其代碼為:
public class TestUtilities {
@Keyword
def CheckItemExists(TestObject obj) {
return obj != null;
}
}
調用代碼如下:
WebUI.openBrowser('https://news.baidu.com')
if (CustomKeywords.'my.test.kits.TestUtilities.CheckItemExists'(findTestObject('Object Repository/testKeywords/Page_/input_tn'))) {
WebUI.check(findTestObject('Object Repository/testKeywords/Page_/input_tn'))
WebUI.setText(findTestObject('Object Repository/testKeywords/Page_/input_word'), '新聞標題')
} else {
WebUI.setText(findTestObject('Object Repository/testKeywords/Page_/input_word'), 'Katalon')
}
Method Call Statement
這是一種局部方法定義和調用方式,比如我需要打開百度新聞,然后登錄之后再做一些其他操作,如果將登錄
這個操作封裝起來,代碼則大致如下:
WebUI.openBrowser('https://news.baidu.com/')
WebUI.click(findTestObject('logintest/Page_/a_'))
login('xxxxx', '123456')
WebUI.click(findTestObject('logintest/Page_/input_TANGRAM__PSP_12__submit'))
def login(userName, password) {
WebUI.setText(findTestObject('logintest/Page_/input_userName'), userName)
WebUI.setText(findTestObject('logintest/Page_/input_password'), password)
}
Data Files
很多時候,測試用例需要配合本地的文檔進行測試,比如需要測若干個用戶賬號,這些賬號都放在cvs或者excel文件中,又或者有可能需要測試一些產品的創建流程,產品信息也是存放在excel中。這些情況下,如果通過在代碼里一行行賦值的方式,就顯得太臃腫、太費時費力了。Katalon
提供了一個叫Data Files
的功能,將數據添加進來,並將字段綁定到腳本中即可實現。
添加數據方法如下:
如果現在我要用excel中所有的用戶,依次測試登錄功能,代碼如下:
for(def rowIdx = 0; rowIdx < findTestData('testUsers').getAllData().size(); rowIdx++) {
WebUI.openBrowser('https://news.baidu.com/')
WebUI.click(findTestObject('logintest/Page_/a_'))
// 需要注意的是,這里的column和row的值,都是從1開始
def userName = findTestData('testUsers').getValue(1, rowIdx + 1)
def password = findTestData('testUsers').getValue(2, rowIdx + 1)
login(userName, password)
WebUI.click(findTestObject('logintest/Page_/input_TANGRAM__PSP_12__submit'))
WebUI.closeBrowser()
}
def login(def userName, def password) {
WebUI.setText(findTestObject('logintest/Page_/input_userName'), userName)
WebUI.setText(findTestObject('logintest/Page_/input_password'), password)
}
Test Suites & Reports
Katalon
可以自動生成測試報告(前提是用例是通過Test Suites
或者Test Suites Collection
執行),通過執行報告可以分析執行過程、查看異常信息等:
Katalon
還提供了一個Web版的分析工具,可以很方便的將自己本地的測試結果上傳到Katalon Analytics
服務器上(傳送門),僅僅需要在Katalon Studio
里關聯下Katalon
賬號即可:
Test Listeners
Test Listeners
有點像去其他測試框架(Nunit
/Junit
等)中像set up
/tear down
這樣的全局執行函數。
Test Listeners
提供了Before Test Case
、After Test Case
、Before Test Suite Case
和After Test Suite Case
這四個方法,看名字就知道是干嘛的了,你可以做一些全局的操作(比如每次開始執行用例前初始化一些數據、配置等;又或者在用例執行之后,將測試數據進行清理等工作),根據實際需求添加相應的代碼即可:
Katalon Recorder
Katalon
開發團隊還提供了瀏覽器插件Katalon Recorder
,用戶可以在瀏覽器里錄制、調試腳本,Katalon Recorder
可以自動生成代碼,極其方便:
結語
通過本篇,介紹了所有Katalon
的進階用法,雖然實際使用中,Katalon Studio
還是有很多不完美之處,但是總的來說是個非常簡單實用的工具,相信在更新的過程中,現在的這些所謂的瑕疵將會被慢慢的修復掉。
有了這么強大的工具,我們就可以在日常項目中快速地創建專屬的自動化測試用例,使我們有能力在快速迭代的項目中,保障主流程的正確性。