前面的基本了解后,我总结一下近我的一个应用。在不改动脚本的前提下,让程序在两个主机上同时运行。在selenium的官网上都是介绍如何运用Testng和selenium grid 让脚本并行起来。关于Testng+selenium实现脚本并行运行网上有很多资料。
Junit本身不支持并行, 如果要想并行运行的需要修改脚本。这个比较麻烦。在不改变脚本的情况下,我们可以利用selenium Grid 和hudson+ant实现类似的功能。
主要的思路,是新建多个任务,每个任务同一个code但是不同的配置文件(控制用例的执行,和浏览器设置),然后启动多个rc,同时触发多个任务。后新建一个report的任务,将把每个分任务的junit报告合成。
具体如下:
1.配置hudson:在系统管理-》系统设置中将执行者数量改为你要同时运行job的数量。
2.注册你需要的RC.你可以在rc的selenium grid 在hub上注册:
ant -Denvironment="*FireFox" -Dport=5555 -Dhost=192.168.1.182 -DhubURL=http://192.168.1.182:4444 launch-remote-control
你也可以增加HUDSON节点通过jnlp连接到hudson master。这样会在每次重启tomcat的时候,连接好远程主机后,rc会自动注册。
3.用一个外部xml(config.xml)来控制要运行的case,假如我们有100 个用例要运行,我们为A分配30个任务,为B分配30个任务,剩下的由C执行。每次我们要增加用例,只需要改变这个config文件可以了。
具体是这样:(1)新建config job专门用于在svn上下载3个config文件。
(2) 为A,B,C新建3个任务。配置SVN指向代码的根目录。
(3)配置共有的ant,在原本的ant任务中假如copy操作,将config文件copy到当前job的workspace下面。
(4)新建report任务,讲3个单独的job junit报告集成成一份报告。
具体是修改junitreport节点。取到3个分开job的test*.xml用于合成html汇总报告。
(5)讲config文件设为定时任务,然后将A,B,C设为其下游任务。
在将report设为A,B,C的下游任务。
(6)这样整个平台搭建起来了。