构建Web UI 自动化测试环境(3)

发表于:2015-09-16来源:uml.org.cn作者:不详点击数: 标签:
在容器中创建目录 /var/svn/repos(mkdir -p /var/svn/repos),并基于该目录创建 Subversion 资源库(svnadmin create /var/svn/repos)。 在资源库目录下的 svnserve.conf 文件中删除

  在容器中创建目录 /var/svn/repos(mkdir -p /var/svn/repos),并基于该目录创建 Subversion 资源库(svnadmin create /var/svn/repos)。

  在资源库目录下的 svnserve.conf 文件中删除“password-db = passwd”前面的注释符 #,并在 passwd 文件中添加一行“shenrui = password”。

  用命令“docker commit mysvn”把上面所做的修改保存下来创建一个新镜像 mysvn。

  最后,用命令“docker run -t -d -p 3690:3690 --name mysvn mysvn svnserve -d --foreground -r /var/svn/repos”启动 mysvn 容器。启动时,添加容器到主机的端口映射“-p 3690:3690”以便之后直接通过主机 IP 提交测试脚本。

  至此,Docker 上有两个正在运行的容器(docker ps),名字分别是 myjenkins 和 mysvn。

  准备 Sahi 测试脚本

  为实例编写的 Sahi 测试脚本是针对developerWorks 中国网站做的一些简单测试。目录结构如下图。Downloads.sah 和 topics.sah 分别点击首页上的“软件下载”和“技术主题”链接,然后验证跳转后的页面的标题。Search.sah 在首页的搜索框中输入 docker 并对搜索结果页面进行简单验证。Mytest.suite 是一个测试套件文件,用来包含其他三个测试脚本。

  图 7. Sahi 测试脚本目录

  run_tests.sh 的文件内容如下。它首先调用 init.sh 启动 Xvfb 和 Sahi,然后触发测试脚本的运行。命令中指定了 JUnit 报表的输出路径和 Sahi 自身的 HTML 报表的输出路径。

  图 8. run_tests.sh 文件内容

  将测试脚本提交到 Docker 的 Subversion 容器(svn://172.17.42.1/mytest)。

  配置 Jenkins

  首先,安装两个 Jenkins 插件:

  Docker Plugin

  该插件能够集成 Jenkins 与 Docker。其功能前文已有描述。

  HTML Publisher Plugin

  该插件用以发布构建生成 HTML 报表,方便日后查看。

  接下来,要开启 Docker 的 TCP 监听端口。开启的方法在不同的系统上有所不同。本实例 Docker 主机为 RHEL 6.5。开启的方法是在/etc/sysconfig/docker 中设置 other_args="-H tcp://0.0.0.0:4243 -H unix:///var/run/docker.sock",然后运行“service docker restart”重启 Docker 服务。CoreOS 上的开启方法请参见Customizing docker。

  进入 Jenkins 的系统配置页面(Manager Jenkins>Configure System),在最底部比之前增加了一个 Cloud 的部分。点击 Add a new cloud,选择 Docker 添加一个 Docker 主机。这里,因为 Jenkins 运行在 Docker 的容器里,直接用私有 IP(ifconfig 里 docker0 对应的 IP)加端口 4243 填写 Docker URL 输入域。

  图 9. Docker Cloud 配置

  Figure xxx. Requires a heading

  接下来,添加 Docker 镜像。

  图 10. Docker 镜像配置

  建议将 Jenkins Slave 的 workspace 目录映射到 Docker 主机的一个文件夹,这样 workspace 的内容才能持久保存,并且从 Subversion 或者其他版本控制软件更新代码的时候才会以增量方式更新。在该实例中,配置如下。

  图 11. Docker 镜像 Volumes 配置

  同之前在启动 Jenkins 容器部分讲到的一样,必须修改主机上的目录的权限,以确保容器能够对其读写。

  现在,可以创建 Jenkins Job 了。

  图 12. Job 配置 – Docker 容器部分

  此时,Job 配置的页面里比之前增加了一个 Docker Container 的部分。在 Label Expression 里输入“docker”与之前定义的 shenrui/sahi 镜像绑定 (该输入域的值与镜像配置里的 Labels 输入域值相同)。

  Source Code Management 部分,选择 Subversion,并填入之前在 Subversion 容器上创建的资源库 URL。

  图 13. Job 配置 – 源代码管理部分

原文转自:http://www.uml.org.cn/Test/201507314.asp