现在越来越多的项目组开始引入敏捷,其中对于我们的自动化测试也有了一些新的要求。至少要把我们做的自动化案例能够持续地跑起来,能够在敏捷模式下良好地运转起来。为了迎合行业的发展,接下来就简单的做一下持续集成自动化测试。
要做持续集成自动化测试,需要工具和测试环境。这里工具使用Jenkins,测试环境使用Robot Framework自带的类库。
Jenkins的部署参考:https://blog.csdn.net/cjw1991/article/details/87899081
RF的环境搭建参考:https://blog.csdn.net/cjw1991/article/details/87892342
准备的脚本很简单,使用了RF中的BuiltIn和Collections库。这两个库是RF自带的库,不需要额外的下载包。脚本演示了RF中变量和常量的使用,由于脚本简单,所以执行速度很快。
变量文件var.py的内容:
import random
__all__ = ['scalar', 'LIST__var', 'integer']
scalar = 'Hello world!'
LIST__var = ['Hello', 'list', 'world']
integer = random.randint(1,10)
测试脚本:
*** Settings ***
Variables ../var.py
Library Collections
*** Variables ***
${val1} value
@{listVal1} abc def 123
&{mydict} 英语=90 数学=90
*** Test Cases ***
变量与常量基础
[Documentation] 变量与常量基础
Log ${val1}
Log Many @{listVal1}
Log %{ANDROID_HOME}
${shuzhi} Set Variable ${2.6} 2.6
Log &{mydict}[数学]
Log ${mydict}
Scalar变量
[Documentation] Scalar变量
${val2} Set Variable abcd
${valif2} Set Variable If '${val2}'=='abcd' efgh ace622
List变量
[Documentation] List变量
@{Val3} Set Variable 1 2 3
@{listVal3} Create List 3 2 1
Run Keyword Log abcd WARN #参数一个一个的写
@{argVal3} Create List adcb WARN
${keyword} Set Variable log
Run Keyword ${keyword} @{argVal3} # 符合关键字里说的第一个Scalar变量,第二个List变量
Log @{argVal3}
@{useList} Create List a b c #一维List的使用
Log @{useList}[1]
Log ${useList[1]}
@{listA} Create List 1 2
@{listB} Create List 3 4
@{listC} Create List ${listA} ${listB} #二维List的创建,后面的listA和listB要用'$'符号
Log @{listC[1]}[1] #二维数组的使用,使用@符号 #注释要紧跟关键字参数的后面
Log ${listC[1][1]} #二维数组的使用,使用$符号
变量转换
[Documentation] 变量转换
#1.List变量转换成Scalar
@{argVal4} Create List abcd WARN #List变量值用'|'分隔
Log ${argVal4}
#2.Scalar变量转换成List
${argVal4} Create List 1234 5678
Log ${argVal4}
${listVal4} Create List 1234 5678
Log =@{listVal4}=
#3.转换的限制
Log =@{argVal4}=
@{argVal4} Create List 4444 8888
Log ${argVal4}
${argVal5} Create List 1111 2222
Log ${argVal5}
@{argVal5} Create List 3333 6666
Log ${argVal5}
变量文件
[Documentation] 变量文件
Log ${scalar}
Log ${var}
Log ${integer}
启动Jenkins服务的这台机器在Jenkins里叫做master,而其它的连到master上的机器(物理机、虚拟机都可以)都是slave,也叫节点。如果在master上运行案例,通常是隐藏进程运行的。所以,如果你的案例是有UI自动化测试的,最好添加一个slave来运行,否则很可能会执行失败。如果有多台机器需要接入Jenkins来执行案例,那更要加一下slave。
浏览器中输入http://ip:port/,回车进入到Jenkins首页,点击“系统管理”选项,然后点击“全局安全配置”,看到如下界面。
如上图所示,红色框中在"Agents"下面指定端口,该端口要在阿里云中加入到安全组中,才能起作用。如下图所示
进入Jenkins首页,点击“系统管理”选项,然后点击“节点管理”,看到如下界面。
如上图,点击左边的"New Node"选项,在"Node name"输入节点名称,如"rf_test",然后选择“固定节点”单选按钮,如下图所示。
如上图,点击"ok"按钮之后,进入节点设置界面,如下图。
如上图,填写好节点的信息后,点击"Save"按钮后,这个节点才算生成了。此时可以看到所有的slave节点列表,如下图所示。
如上图,点击"rf_test"节点名称链接,跳转到节点详情页面,如下图所示。
如上图,点击"Lanuch"按钮,会下载一个slave-agent.jnlp的文件,一次下载可以多次使用。下载好文件后,点击运行这个文件,如下图。
如上图,节点已经和Jenkins服务器连接成功了。返回节点列表,可以看到新的节点的信息,如下图。
如上图,节点已经配置成功了。
RF插件主要用来解析RF运行后的output.xml文件,将解析的结果展示出来。安装了RF插件后,在Jenkins的Job列表里会自动新增一列Robot Results。如果配置了RF插件的,并且有运行结果的,Job会在这里显示最新的构建结果。同时在配置了RF插件的Job首页,会显示构建结果的趋势图,左侧也会多出Robot Results以便查看测试报告。
进入Jenkins首页,点击“系统管理”选项,然后点击“插件管理”,进入到插件管理界面,如下图所示。
如上图,点击"Avaliable"后,在"Filter:“后面的输入框中输入"Robot Framework”,会自动查找RF插件,如下图所示。
如上图,勾选"Robot Framework"前面的勾选框,然后点击"Download now and install after restart",进入到RF插件下载页面,如下图。
如上图,片刻后插件已经下载成功。勾选"Restart Jenkins when installation is complete and no jobs are running"前面的勾选框,会自动进行重启。重启成功后,在插件管理页面,在"installed"选项下,在"Filter"后的输入框中输入"Robot Framework",就可以找到该插件。
进入Jenkins首页,点击左上角“New 任务”选项,进入创建Job的页面。在"Enter an item name"下面的输入框中输入Job的名称"rf-free"(不能和已有Job重名),选择“构建一个自由风格的软件项目”,如下图。
如上图,点击"ok"按钮,进入到Job配置页面。
如上图,对Job进行了简单的配置。
General:
1.勾选了“丢弃旧的构建”,在"Max # of builds to keep"后面的输入框中输入20,表示最大构建保有数。
2.勾选"Max # of builds to keep",在"Label Expression"后面的输入框中输入"robot",指定标签为robot的节点(执行机)执行该Job。
Build:
点击Build下面的"Add build step"下拉选项框,选择"执行windows批处理命令"选项。在"Command"后面的文本框中输入命令robot -s "*" D:\rf_test\rf_first_test\变量和常量.robot
,表示执行变量和常量.robot中的案例。robot指令具体的用法,可以在命令行中输入robot --help
进行查看。
Post-build Actions:
点击Post-build Actions下面的"Add post build action"下拉选项框,选择"Publish Robot Framework test results"选项。
最后,点击"Apply"按钮,然后再点击"Save"按钮,进入到"rf-free"工程页面里,如下图。
如上图,简单的Job已经配置好了。
上个步骤已经将Job配置好了,在确定配置的节点是在线的情况下,在Job首页点击“立即构建”,即可执行该RF脚本。执行完成后,在Build History下面会显示构建的历史,如下图。
如上图,在Build History多出了个#5(由于不是第一次执行了,第一次是#1)条目,#5前面的蓝色小圆点表示案例全部执行成功了,如果是红色小圆点表示部分或者全部的案例执行失败了。点击#5,跳转到这次构建执行的详细执行情况,如下图。
如上图,点击"Browser Results",进入到Robot Framework Test Results统计页面,图标英文文字会出现乱码。而点击Open report.html和Open log.html时,跳转到新页面会出现提示"Opening Robot Framework report failed"和"Opening Robot Framework log failed"。
出现上面这些情况,请参考:https://blog.csdn.net/cjw1991/article/details/87910401
处理好上面的问题,就可以查看执行结果了。
report.html
log.html
至此,Jenkins部署Robot Framework项目完成了。
参考:《Robot Framework自动化测试修炼宝典》----------------------------------------- 齐涛