Robot Framework分层设计与项目实战
Robot Framework分层设计
分层(Layer)模式是最常见的一种架构模式。甚至说分层模式是很多架构模式的基础,将解决方案的组件分隔到不同的层中。每一层中的组件应保持内聚性,并且应大致在同一抽象级别。每一层都应与它下面的各层保持松散耦合。
分层模式的关键点在于确定依赖:即通过分层,可以限制子系统间的依赖关系,使系统以更松散的方式耦合,从而更易于维护。
如下为禅道登录的自动化测试示例:
针对禅道登录测试,我们可能不会只用一组“admin,123456”的用户去做测试,还会使用多组用户数据去做测试,那可以在Login模块创建多个登录测试用例,如下图:
其实对于每一条测试用例来说,只是登录的用户名和密码不同,脚本步骤是完全一样的。这样做无疑增加的脚本的冗余,而且不便于维护。假如,某个输入框的定位方式变了,就不得不打开每一条用例进行修改。
可以通过分层的思想,然后根据robot_framework提供的功能来完成上述示例的优化,操作步骤如下:
1、创建资源:右键“UITest”,选择“New Resource”创建资源,输入名称“业务关键字”
2、创建关键字:右键“业务关键字”,选择“New Keyword”创建关键字,输入名称“禅道登录”
3、编辑关键字:选中“禅道登录”,点击“Settings”按钮,点击“Arguments”输入框,输入如下:
参数之间用 | 分割线分开,如果想给参数一个默认值,可以如下编写:
${username} | ${passwd} | ${exceptedRes}=admin 默认值参数必须放最后
4、把之前的登录业务代码也放入业务关键字中,如下:
5、添加导入的资源以及调用关键字:
切换到测试套件(Login)页面,添加资源(业务关键字.txt),然后在测试用例中使用创建的关键字。如下图所示:
6、进行继续细化分层设计:
在上一个操作步骤中,对于每一条用例来说,调用“禅道登录”关键字,输入用户名、密码以及预期结果即可。不用关心用例是如何执行的。如果元素定位发生了变化,只用去修改“禅道登录”关键字即可,不用对每一条用例做任何修改。大大提高的用例的维护性和扩展性。
我们还可以做如下细化操作,把过程中的步骤进行再次分层:
禅道登录业务关键字内容改造如下:
基础关键字内容如下:
使用命令行执行Robot Framework脚本
编写好的Robot Framework脚本,可以使用Robot Framework自带的pybot命令去执行测试,具体使用方法如下:
1、执行一个项目的所有测试用例:
pybot 项目路径(项目路径可以如下方式查看)
2、执行一个测试套件的所有用例:
pybot 项目路径\suit文件名称(如下图)
3、执行测试套件中的测试用例:
pybot --test 用例名称 项目路径\suit文件名称 (用例名称支持* ?去做匹配)
举例:
pybot --test “TestCase01" /Users/TestProject/TestSuite01.txt
pybot --test “TestCase*" /Users/TestProject/TestSuite01.txt
4、执行项目中指定标签名的测试用例:
pybot --include 标签名称 项目路径 (其中标签名称在测试用例的设置中添加)
pybot --include “smokeTest” /Users/TestProject/
5、传递变量参数:
使用Add Scalar去添加变量,添加完成后,可以使用命令行传递变量到测试脚本中去。
举例:
pybot --test "TestCase01" -v num1:10 -v num2:10 /Users/TestProject/TestSuite01.txt
6、设置存放输出文件的路径:
-d \–outputdir 输出文件的路径。默认目录是测试案例执行的目录,给出的目录也是相对于案例执行的目录,除非设置的目录是绝对路径。
举例:
pybot --test "TestCase01" -d /Users/TestProject/ /Users/TestProject/TestSuite01.txt
Robot Framework集成Jenkins环境
Jenkins工具介绍:
监视重复工作的执行,本质上提供了一个易于使用的持续集成系统,使得开发人员更容易地将改变集成到工程中,使得用户更容易获得一个新的build。自动化,持续的构建提高了软件开发的效率。
Robot framework集成Jenkins步骤如下:
1、安装Robot Framework plugin 插件
登录Jenkins 之后,依次进入系统管理 – 管理插件页面,然后在可选插件中选择Robot Framework plugin 进行安装即可。
2、安装完之后,进入 jenkins首页 -- 新建任务—构建一个自由风格的软件项目—输入项目名称后,点击确定。如下图所示:
3、配置job页面
增加构建步骤,类型为:Execute shell
设置运行RobotFramework脚本的命令
备注:里面输入的命令为之前所讲过的命令行执行RobotFramework脚本的命令
增加构建后操作步骤,类型为Publish Robot Framework test results,配置如下:
Directory of Robot output:该项要设置和构建步骤中的命令行 –d 后面的参数一致,否则会找不到如下配置的结果文件
Other files to copy:定义你要拷贝的其它文件,如果不设置,那么robot framework脚本运行过程中产生的截图等文件,在后面生成的报表中会不能显示。可以设置为.或者*.png
Thresholds for build result 阀值设置,如70%和90%,测试用例执行成功率和通过率
设置每天定时自动执行:增加构建触发器,选择类型Build periodically
日程表填写格式为: * * * * * (注意,*号之间空格)
*号依次代表分、时、日、月、星期
比如:10 * * * * 10 14 * * * 10 14 8 * *
4、结果展示及其配置
做好之前的配置后,等设置的时间到达,可以自动运行robot测试脚本,运行后
可以直接在JOB展示页查看结果,结果的展示是通过Robot Framework plugin插件实现的,图形结果略,报表如下图所示:
点击open log.html链接,一般情况下会出现如下图所示,不能显示报表。
该问题有多种处理方式:
一、临时解决方式:
jenkins系统管理—>运行命令行,在文本里输入
System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "")
点击运行即可解决,重启jenkins后失效。
二、永久解决方式:
修改jenkins.xml如下:
5、利用 Zentimestamp 插件分批次生成测试报告
Zentimestamp 插件是用来自定义日期和时间模式的插件,之前配置的robot framework脚本执行后,都会覆盖之前的测试结果,可以使用该插件根据执行时间分批次存放测试结果。配置如下:
1)安装Zentimestamp插件,和之前安装robot插件一样
2)进入系统管理---系统设置---全局属性,修改如下:
3)进入job配置页面,把之前的shell做如下修改,增加 \({BUILD_TIMESTAMP}
![](https://img2018.cnblogs.com/blog/1526094/201912/1526094-20191230225723550-306505993.png)
4)在构建后操作 -- Directory of Robot output中同步修改,添加\){BUILD_TIMESTAMP},执行batch时,引用Jenkins中定义的变量用%param%
6、自定义robot framework 邮件测试报告
1)安装插件Email Extension Plugin,该插件能允许你自定义邮件通知的方方面面,比如在发送邮件时你可以自定义发送给谁,发送具体什么内容等等,比jenkins自带的邮件插件强大很多。
2)登录163邮箱,开通smtp服务并设置邮箱客户端授权码
3)针对该插件进行全局配置:
进入系统管理 - 系统设置 - 配置Extended E-mail Notification默认设置(以163为例),点开高级按钮,勾选Use SMTP Authentication,输入163邮箱账号和163邮箱客户端授权码(非邮箱登录密码)
4)继续做如下配置
5)把管理员邮箱设置和发送邮件的163邮箱名一致:
6)针对该插件进行项目配置:
进入Job配置页面,增加一个构建后操作步骤Editable Email Notification,配置可以默认,也可以根据你的需要来配置。
可把Default Subject 邮件主题增加项目名称,如下:
RFDemo自动化测试报告——$DEFAULT_SUBJECT
可把邮件的触发器改为构建完成总是发送邮件,点击 Advanced Settings... ,做如下设置
7)之前在第四步设置了邮件模版,需要把对应的groovy-html-robot.template模版放入到 \(Jenkins_Home/email-templates目录
\)Jenkins_Home可以通过进入系统设置查看:点击系统管理—系统设置,查看主目录
如果该目录下没有email-templates目录,新建一个该目录即可。
把自定义的模版文件groovy-html-robot.template放置在该目录。
备注:以后有新的模版也可以放入该目录,然后把邮件模块设置成新模版。
登录163邮箱查看的邮件报告: