Robot Framework实战
自动化测试框架如何选型?不同的框架使用场景与优劣势如何?Robot Framework如何写关键字?如何构建PageObject模型?如何进行后续的CI/CD等自动化工作?本文由小米视频高级测试开发魏航在公益讲座中分享的《Robot Framework实战》整理成稿。以下是正文:
今天为大家分享的内容是Robot Framework从入门到实践的整个过程,首先会简单为大家介绍一下自动化测试框架,包括框架选择、环境搭建、接口自动化等,最后会带大家实际操作一遍,下面就让我们一起进入正题。
首先简单介绍一下,为什么要做自动化测试?我总结了3点:
1.减少人力成本自动化测试可以更好地利用无人值守的时间,去更频繁地执行测试。
2.完成大量重复性工作自动化测试可以替代大量重复性操作,可以把更多的时间花在更全面的用例设计和新功能的测试上。
3.提高测试效率自动化测试可以大幅提升回归测试的效率,包括对E2E用例的观察。
自动化测试框架选型
接下来我们一起来分析一下市面上比较流行的自动化测试框架。
(可私信我获取公益直播回放,查看详细解说)
Robot Framework环境搭建
下面我们一起看一下Robot Framework环境搭建的过程。
因为Robot Framework是基于python的,所以首先要安装python的环境,需要安装3.7及以下版本,因为我们在实践中发现Robot Framework对3.8及以上版本的兼容性有问题。
第二步,安装Robot Framework框架,通过pip去安装就可以,它是python自带的安装软件包的命令。
第三步,安装wxpython,图形化的界面是基于wxpython的,所以要安装一下wxpython。
最后,安装robotframework-ride,这个ride就是Robot Framework编写用例的图形化界面。
装完环境之后,我们还需要装一些依赖。
我们常用的接口依赖有以下这四个:requests库、RequestLibrary (封装的http)、 DatabaseLibrary(操作数据库)、RedisLibrary(操作redis),都是在Robot Framework中直接导入库名就可以了。
大家可以看到,这些常用的依赖都有非常丰富的第三方依赖库去帮助我们使用的。接下来我们一起来看一下UI相关的依赖。
根据浏览器不同,需要选择对应的浏览器驱动,选择浏览器驱动时要对应浏览器版本,我们常用的一般有火狐、Chrome和微软的Edge。
1)Mozilla GeckoDriver(Firefox) https://github.com/mozilla/geckodriver/releases2)Google Chrome Driver https://sites.google.com/a/chromium.org/chromedriver/ https://chromedriver.storage.googleapis.com/index.html?path=2.28/3)Microsoft Edge Driver(IE) https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/与此同时我们还需要安装Selenium2Library库也是直接导入库名Selenium2Library就可以了。
下面简单给大家讲一下导入Robot Framewor库的步骤,在后面带大家实战演练的过程中也会使用到。
在下图的右侧,我们可以看到有一个Library按钮,点击之后,会弹出下图所示的框,需要我们输入要导入的库名。库名的输入要正确,需要区分大小写。点击OK之后,如果字体是黑色的,说明导入成功。如果字体是红色的,需要排查一下是依赖的问题,还是我们输入的问题。
导入之后,我们可以查看一下,我们导入的关键字有哪些。快捷键是F5,当我们按F5之后,会弹出如下图所示的提示框,可以查阅关键字。
接下来我们讲一下目录层级结构。最外层是项目名称,二级目录是TestSuit测试套件,也就是我们所说的测试用例,测试用例下面又分了接口、UI等。再往下就是Keyword(关键字),再往下还有一些我们用例中可能会用到的参数。
前面为大家讲了一些依赖的安装、环境的安装,这里我们也为大家整理了一份安装的说明,有需要的朋友可以私信我获取。可私信我获取直播回放链接,查看详细解说。
Robot Framework命令
接下来我们再一起看一下Robot 有哪些命令。先来看这一条:robot -d xxx(报告地址) xxx(用例地址)
这一条的意思是我们通过调robot的指令就可以去执行自动化测试,第一个参数是你要生成的报告的地址在哪,第二个是你当前编写的.robot的文件用例放在哪。
robot –h(robot --help)帮助命令,通过这个指令我们可以看到常用的参数有哪些。
1. -i --include tag *通过标签控制测试执行范围,可以使用 AND,OR,NOT 操作符
-- include B0-Single-API-i B0-Single-APIANDB1-stock-center
2. -e --exclude tag *通过标签控制测试不执行范围
--exclude tag1-e tag2
......
回放视频中有针对这些指令的演示,可私信我获取直播回放链接。
Robot Framework Tag的运用
接下来我们一起看一下Tag的运用:1、合理使用标签可以提升测试报告可读性2、使用标签可以对用例进行筛选调试
第一条很好理解,我们在生成报告的时候,测试报告可以根据Tag去进行分类,后面的实战演示中也会跟大家一起去看一下测试报告是什么样的。第二条讲的是,如果我需要对一部分用例进行调试,这时候就可以通过标签的方式去进行筛选调试。
接下来我们一起看一下标签在哪里打。通过下面的截图我们可以看到,如果你在suite下面,所有的测试用例都被打上Force Tags标签,如果在Testcase用例层级,那就是只针对当前用例打标签。
接口自动化测试案例
下面我们再看一个接口自动化的例子。接口自动化步骤:
1、发送请求 通过RequestsLibrary类库中的post request关键字发起HTTP请求,如下图所示
2、解析结果 通过解析接口返回的状态码或者其他字段
3、验证结果 通过接口解析字段值结果与预期结果相比较
大家都知道,接口测试其实就是HTTP请求,大家可能也会通过postman之类的工具去发起请求,一个正常的请求需要包含哪些内容呢?首先会有一个url地址,还有一些header信息、参数等。
从上面的截图中我们可以看到,先生成一个header,然后再定义一个别名,通过post或get请求去执行这个http请求,会有一个返回值,我们对这个返回值进行校验,如果解析出来的结果状态码是符合我们预期的,结果和我们的预期结果相比较是一致的,代表这个接口自动化测试就通过了。
上面这个截图是我们之前的一个项目,我们可以看到,经过各种封装之后,目录层级就会变得比较多了。关键字分为接口请求的关键字、断言的关键字、包括一些初始化的关键字,还有一些公共的关键字。公共的关键字里面可能会去做一些redis、mysql之类的封装,它本身是提供这些能力的,但是可能需要我们每一步都重新配置一下,如果把它配置出来,封装成一个关键字,就可以更方便的供我们使用了。
后面的内容是实战演示,可私信我获取直播回放链接。