自动化持续集成的环境搭建
目标:能够有一个自动触发自动化测试代码的平台,定时执行自动化测试用例,输出测试报告,发现错误则发报警邮件到指定邮箱,解放双手测试主流程
首先,我们要实现jenkins+maven+testng+cucumber来实现自动化触发这个步骤
原理:jenkins能够通过svn获取你最新代码并且进行编译,然后通过构建任务的方式通过maven命令,配合Maven Surefire Plugin插件执行单元测试
jenkins配置如下图:
1.在jenkins上新建一个maven项目
2.项目配置如下图
方便起见,一般都会设置一个构建的最大个数,不然构建的任务就会越来越多...
源码管理,填上你上传到svn的代码地址,用户名账号可以用自己的svn账号
构建触发器,这里选择定时构建,构建格式为* * * * *(类似cron表达式,lts定时任务那个),五个星号分别代表:分钟,小时,一个月的第几天,表示第几月,表示一周中的第几天
下图中我的设置为每天凌晨3点0分触发构建,具体用法可以百度,很多资料
Bulid构建,Root POM就填pom,Goals and options表示你构建时候要执行的maven命令,下图中我指定执行TestA和TestRunner 两个测试类,更多用法也可百度
构建后操作,这里选择cucumber reports插件,该插件只需要在jenkins上安装好就可以直接选择使用
(构建后操作还可以选择构建失败发送邮件之类的,这个暂时没有配置,因为还没太多具体可以执行的自动化用例,大概也是一个插件可以解决的事情,这个想了解也可以自行百度)
插件效果图如下
3.maven工程的pom文件配置,maven-compiler-plugin插件是指定编译时使用的jdk版本,
maven-surefire-plugin是执行单元测试的插件,配合build构建时候的maven命令,可以执行执行xml文件或者指定的java类,具体自行百度
4.testng的xml执行文件
文件里面可以指定需要执行的测试类
5.cucumber的run文件不要使用标签@runwith,必须要继承testng-cucumber这个jar包里面的AbstractTestNGCucumberTests类
6.把测试结果截图发邮件到个人邮箱
这里发邮件分为几个步骤
一、生成cucumber-report图片报告到本地,格式就是jenkins那个能查看的cucumber-report报告,代码如下
二、页面截图,用webdriver的方式(谷歌浏览器)打开本地报告,然后截图,截图代码如下:
三、发送截图邮件,代码有点长,如下
注意事项:
pom文件里面依赖的jar包一个都不能少,所有代码都在svn的E:\svn\fangcang\TestGroup\11-AutoTest\trunk这个路径下,随时都可以查看,多看多问自然就明白了。
用以上方法,足以满意基本的接口自动化测试的持续集成,但是由于selenium是需要页面支持的(启动jenkins本地服务器上的浏览器),
所以jenkins如果部署在linux服务器上,就需要采用无界面模式来完成web自动化,由于这个问题还没攻克,有志者大可一试,退而求其次,我们这里暂时在虚拟机上部署一套windows系统来满足web自动化的需求
原理:在jenkins上构建的任务其实都依赖是jenkins所在服务器本身的环境(jdk、maven、tomcat),所以只需要在windows虚拟机上安装chrome和chromedriver,再通过tomcat容器启动jenkins的war包,再在jenkins上创建任务就能跑web自动化了
所以windows虚拟机需要做如下几件事情:
1.安装jdk,配置环境变量
2.安装tomcat容器,配置环境变量
3.安装maven,配置环境变量
4.下载chrome
5下载chromedriver
6.下载jenkins的windows系统对应版本的war包
7.配置jenkins环境,创建自动构建的定时任务
8.编写自动化测试代码
完成以上,web自动化的持续集成就能跑起来了
以上步骤,1.2.3.4.5比较基础,百度完全能找到比我描述更详细的答案,所以忽略,
6,jenkins的war下载下来之后,扔到tomcat容器下的webapps目录下,如下图,然后启动tomcat容器,打开浏览器输入loaclhost:8080/jenkins 就能访问jenkins了
7.jenkins的环境配置,配置上jdk和maven的本地安装路径就行
8.测试代码编写,这个任重而道远~!
9.点击立即构建(或者等构建触发器里定义的时间到了),web自动化就可以跑起来了
注意事项:
现在使用的windows虚拟机jenkins插件下载不稳定,老是连接超时,不知是什么问题,如果有想要用到的插件,多试几次就行
代码里selenium设置chromedriver的地址一定要和windows虚拟机上的chromedriver放的位置保持一致