前端自动化测试神器-Katalon进阶用法
前言
上一篇介绍了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还是有很多不完美之处,但是总的来说是个非常简单实用的工具,相信在更新的过程中,现在的这些所谓的瑕疵将会被慢慢的修复掉。
有了这么强大的工具,我们就可以在日常项目中快速地创建专属的自动化测试用例,使我们有能力在快速迭代的项目中,保障主流程的正确性。
本文在我的博客园和我的个人博客上同步发布,作者保留版权,转载请注明来源。
前端自动化测试神器-Katalon进阶用法的更多相关文章
- 前端自动化测试神器-Katalon的基础用法
前言 最近由于在工作中需要通过Web端的功能进行一次大批量的操作,数据量大概在5000左右,如果手动处理, 完成一条数据的操作用时在20秒左右的话,大概需要4-5个人/天的工作量(假设一天8小时的工作 ...
- 篇4 安卓app自动化测试-Appium API进阶
篇4 安卓app自动化测试-Appium API进阶 --lamecho辣么丑 1.1概要 大家好! 我是lamecho(辣么丑),今天是<安卓app自动化测试& ...
- 前端自动化测试工具doh学习总结(二)
一.robot简介 robot是dojo框架中用来进行前端自动化测试的工具,doh主要目的在于单元测试,而robot可以用来模仿用户操作来测试UI.总所周知,Selenium也是一款比较流行的前端自动 ...
- 前端自动化测试工具doh学习总结(一)
前言 项目中需要用到前端自动化测试,自己被当作一个探针研究了下目前用的比较多的web自动化测试工具.一开始研究的是的selenium,但由于项目使用了大量的dijit控件,写起testCase来很费劲 ...
- webstorm+nodejs+JetBrains IDE Support+chrome打造前端开发神器
#webstorm+nodejs+JetBrains IDE Support+chrome打造前端开发神器 -- 工欲善其事 必先利其器 ##各工具介绍 `webstorm`是**JetBrains* ...
- Django框架学习-Model进阶用法
Model进阶用法 回顾 访问外键 访问多对多关系 更改数据库结构 当处理数据库结构改变时,需要注意到几点: 增加字段 首先在开发环境中: 再到产品环境中: 删除字段 删除多对多字段 删除model ...
- canvas图形处理和进阶用法
前面的话 上一篇博客介绍了canvas基础用法,本文将更进一步,介绍canvas的图形处理和进阶用法 图形变换 图形变换是指用数学方法调整所绘形状的物理属性,其实质是坐标变形.所有的变换都依赖于后台的 ...
- 前端自动化测试漫长路之——Selenium初探
引言 最近想解决前端开发或测试中的两个问题:一是界面UI的布局适配,能否在测试的过程中,通过命令操作真机打开相应页面然后截屏,通过对图片识别分类,发现有问题的图片,然后及时修复:二是页面性能分析,很多 ...
- 好程序员web前端分享javascript关联数组用法总结
好程序员web前端分享javascript关联数组用法总结,有需要的朋友可以参考下. Hash关联数组定义 代码如下 // 定义空数组 myhash = { } // 直接定义数组 myhash = ...
随机推荐
- 一次Oracle宕机切换后产生ORA错误的处理过程
问题背景 机房意外断电后Oracle主服务器启动失败,Oracle备机接管 为了安全,管理员对于数据库做expdp的逻辑备份.但备份时发现AttributeInstance表备份失败,提示ORA-01 ...
- 副本机制与副本同步------《Designing Data-Intensive Applications》读书笔记6
进入到第五章了,来到了分布式系统之中最核心与复杂的内容:副本与一致性.通常分布式系统会通过网络连接的多台机器上保存相同数据的副本,所以在本篇之中,我们来展开看看如何去管理和维护这些副本,以及这个过程之 ...
- JS 引擎的执行机制
关于JS引擎的执行机制,首先牢记2点: .JS是单线程语言 JS的Event Loop是JS的执行机制.深入了解JS的执行,就等于深入了解JS里的event loop 关于单线程相对还比较好理解,就是 ...
- SSE图像算法优化系列十三:超高速BoxBlur算法的实现和优化(Opencv的速度的五倍)
在SSE图像算法优化系列五:超高速指数模糊算法的实现和优化(10000*10000在100ms左右实现) 一文中,我曾经说过优化后的ExpBlur比BoxBlur还要快,那个时候我比较的BoxBlur ...
- 【C#学习笔记之一】C#中的关键字
C#中的关键字 关键字是对编译器具有特殊意义的预定义保留标识符.它们不能在程序中用作标识符,除非它们有一个 @ 前缀.例如,@if 是有效的标识符,但 if 不是,因为 if 是关键字. 下面是列出的 ...
- [bzoj1999]树网的核
从下午坑到网上..noip的数据太弱,若干的地方写挂结果还随便过= = 最坑的就是网上有些题解没考虑周全... 第一步是找直径,用两次bfs(或者dfs,Linux下系统栈挺大的..)解决.找出其中一 ...
- Eclipse安装svn插件的几种方式 转帖....
Eclipse安装svn插件的几种方式 1.在线安装: (1).点击 Help --> Install New Software... (2).在弹出的窗口中点击add按钮,输入Name(任意) ...
- 基于Echarts4.0实现旭日图
昨天Echarts4.0正式发布,随着4.0而来的是一系列的更新,挑几个主要的简单说明: 1.展示方面通过增量渲染技术(4.0+)ECharts 能够展现千万级的数据量 2.针对移动端优化,移动端小屏 ...
- Personal Learning Path of Java——Java语言基础
Java语言是面向对象编程语言,Java程序的基本组成单元是类,类体中又包括属性和方法两部分.每一个程序都必须包含一个main()方法,含有main()方法的类称为主类. 如下面代码: package ...
- 关于atom
以前老听别人说atom这款编辑器如何如何的好用,今天特地试了下,结果一不小心将顶部的工具栏给隐藏了,弄了半天都没弄出来.后来就在网上到处寻找帮助,试试这个试试那个,终于弄好了,其实是这样的. 首先在任 ...