ASP MVC 学习系列——04 利用Selenium写自动化测试

当我的web service可以部署到IIS之后,想用Selenium写自动化测试,ruby语言。

写好测试文件后,希望在nant build脚本里写一个task让所有测试自动运行。

nant脚本如下:

 

<target name="all" description="run all automation tests"> <foreach item="File" in="${automation.tests.dir}" property="rbfile"> <echo message="${rbfile}"/> <exec program="${ruby.exe}" workingdir="${automation.tests.dir}" commandline="${rbfile}"/> </foreach> </target> 

 

${automation.tests.dir}是存放test文件的地方;

${ruby.exe} 是ruby.exe的文件全路经,但如果已经注册了环境变量,文件名也可以;

 

 

但是问题就来了,运行这个task之前,需要先启动selenium-server,运行后需要关闭它。

 

运行selenium-server,不能在nant build脚本运行的控制台内,否则会hung住控制台不能继续运行。

那么,利用console的start启动独立的控制台来运行selenium-server。

 

<target name="all" description="run all automation tests"> <exec program="${automation.dir}start_selenuim_server.bat"/> <foreach item="File" in="${automation.tests.dir}" property="rbfile"> <echo message="${rbfile}"/> <exec program="ruby.exe" workingdir="${automation.tests.dir}" commandline="${rbfile}"/> </foreach> </target>  

 

在start_selenuim_server.bat里写入:

start java -jar <fullpath>/selenium-server.jar  

这样,启动selenium-server的问题解决了。

 

那么如何在nant build脚本里关闭这个由独立console进程运行的selenium-server?

 

在selenium.rb文件中,有shut_down_selenium_server函数。

该函数提供在client端请求server关闭的功能。

 

<target name="all" description="run all automation tests"> <exec program="${automation.dir}start_selenuim_server.bat"/> <foreach item="File" in="${automation.tests.dir}" property="rbfile"> <echo message="${rbfile}"/> <exec program="ruby.exe" workingdir="${automation.tests.dir}" commandline="${rbfile}"/> </foreach> <exec program="ruby.exe" workingdir="${automation.dir}" commandline="ShutDownServer.rb"/> </target> 

 

在ShutDownServer.rb中,调用shut_down_selenium_server函数。

或者也可以利用Console直接kill process。

 

无论采取那种方式,在所有测试都通过的情况下,selenium-server可以正常关闭,但是当有测试失败,则server不能退出。

 

 

你可能感兴趣的:(ASP MVC 学习系列——04 利用Selenium写自动化测试)