iCMS

前端自动化测试神器-Katalon进阶用法

iCMS http://www.hlike.cn 2018-02-06 15:13 出处:网络 编辑:@iCMS
好喜欢专业转载优质博客文章的地方哦~

前言

上一篇介绍了Katalon的基础用法,本篇继续介绍一些进阶的用法。


判断/循环/分支/异常处理

判断

以下代码中定义了变量a,并在a为不同的值时,在控制台打印出不同的内容:

等于0: It's zero

小于0: It's negative

大于0: It's positive

def a = 0

if (a == 0) {

println('>>>>>>>>>>>>>>>>>>>>> It's zero')

}

else if(a < 0){

println('>>>>>>>>>>>>>>>>>>>>> It's negative')

}

else {

println('>>>>>>>>>>>>>>>>>>>>> It's positive')

}


循环

连续输出10次Hello world:

// 方法1

def count = 0

while(count < 10) {

println('>>>>>>>>>>>>>>>>>>>>> Hello world')

count++

}

// 方法2

for(def i = 0; i < 10; i++) {

println('>>>>>>>>>>>>>>>>>>>>> Hello world')

}


分支

当a的值变化,输出不同的内容,相应规则为:

0: No

1: Yes

其他:This is not allowed

def a = 0

switch (a) {

case 0:

println(':::::::::::::::::::: No')

break

case 1:

println(':::::::::::::::::::: Yes')

break

default:

println('-------------------- This is not allowed')

}


异常处理

当发生异常时,自动化脚本将会被中断,但是如果有预期的捕获了异常,即便在异常发生时,也可以按照设计继续执行测试脚本。当try作用域内发生任何异常,try中后续的语句将不再执行,转而执行catch中的语句,当try/catch中的任何一个语句块全部执行完毕时,finally将(且一定会)被执行。

try{

def a = 1/0

println('>>>>>>>>>>>>>>>>>>>>> Result is: ' + a)

}

catch(ex){

println('>>>>>>>>>>>>>>>>>>>>> Someting is wrong')

}

finally{

println('>>>>>>>>>>>>>>>>>>>>> It's done')

}


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的功能,将数据添加进来,并将字段绑定到脚本中即可实现。

添加数据方法如下:

前端自动化测试神器-Katalon进阶用法

如果现在我要用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'),password)

}


Test Suites & Reports

Katalon可以自动生成测试报告(前提是用例是通过Test Suites或者Test Suites Collection执行),通过执行报告可以分析执行过程、查看异常信息等:

前端自动化测试神器-Katalon进阶用法

Katalon还提供了一个Web版的分析工具,可以很方便的将自己本地的测试结果上传到Katalon Analytics服务器上(传送门),仅仅需要在Katalon Studio里关联下Katalon账号即可:

前端自动化测试神器-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进阶用法


结语

通过本篇,介绍了所有Katalon的进阶用法,虽然实际使用中,Katalon Studio还是有很多不完美之处,但是总的来说是个非常简单实用的工具,相信在更新的过程中,现在的这些所谓的瑕疵将会被慢慢的修复掉。

有了这么强大的工具,我们就可以在日常项目中快速地创建专属的自动化测试用例,使我们有能力在快速迭代的项目中,保障主流程的正确性。


本文在我的博客园和我的个人博客上同步发布,作者保留版权,转载请注明来源。

0

精彩评论

暂无评论...
验证码 换一张
取 消

热门标签