使用Groovy和Selenium构建一个脱离IDE的Portable的测试环境

项目中经常会针对一些独立的CASE做针对性的测试,有时候也需要在多台机器上同时跑同样的测试CASE,这个时候就不能够再依赖IDE。这里选择Groovy作为测试脚本的编写,使用Selenium来做页面的自动测试。准备一个文件夹for_test,我们的目标是不需要特殊的安装和配置,自己的将这个for_test文件夹分发给测试人员,在测试人员自己的机器,或者空白机器上就可以进行测试。目录组成如下


for_test
|---groovy-1.6.2/
|--- jdk/
|---selenium-server-1.0.1/
|---logback.xml
|---start_server.bat
|---start_test.bat
|---TestInput.groovy

为何能够在Groovy中使用selenium,必须将selenium 中用于java-client的两个包selenium-java-client-driver.jar,selenium-java-client-driver-tests.jar拷贝到groovy的lib目录中,由于使用了slf4j作为测试日志的输出,所以还需要将slf4j-api-1.5.8.jar,logback-core-0.9.15.jar,logback-classic-0.9.15.jar三个包拷贝到groovy的lib目录中。
首先来写selenium的服务启动bat文件:start_server.bat
@echo off
rem
set CURRENT_DIR=%cd%
if not "%JAVA_HOME%" == "" goto gotoHome
set JAVA_HOME=%CURRENT_DIR%\jdk

 
:gotoHome
set SELENIUM_HOME=%CURRENT_DIR%\selenium-server-1.0.1
 
call %JAVA_HOME%\bin\java -jar -server %SELENIUM_HOME%\selenium-server.jar -log selenium.log

然后写我们用来跑测试的文件:start_test.bat
@echo off
rem
set CURRENT_DIR=%cd%
if not "%JAVA_HOME%" == "" goto gotoHome
set JAVA_HOME=%CURRENT_DIR%\jdk

 
:gotoHome
set GROOVY_HOME=%CURRENT_DIR%\groovy-1.6.2
set PATH=%JAVA_HOME%\bin;%GROOVY_HOME%\bin;%PATH%
call groovy TestInput

这里,默认是执行TestInput中的脚本。
为了保存测试结果的日志,我们需要为logback.xml添加一些内容:
<configuration>
<appender name="FILE" class="ch.qos.logback.core.FileAppender">
<file>out.log</file>

<layout class="ch.qos.logback.classic.PatternLayout">
<Pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</Pattern>
</layout>
</appender>

 
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<layout class="ch.qos.logback.classic.PatternLayout">

<Pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</Pattern>
</layout>
</appender>
 
<root level="debug">

<appender-ref ref="FILE" />
<appender-ref ref="STDOUT" />

</root>
</configuration>

下面你可以开始你的测试代码的编写了:
import com.thoughtworks.selenium.*
import java.util.Date
import java.text.SimpleDateFormat
import org.slf4j.Logger;

import org.slf4j.LoggerFactory;
 
Logger logger = LoggerFactory.getLogger("TestInput");
 

baseUrl="http://localhost"
dateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
 
def selenium = new DefaultSelenium("localhost",4444,"*iexplore",baseUrl)

selenium.start();
 
logger.debug("start to open window ......");
 
selenium.open("/XXXXXXXX");

selenium.waitForPageToLoad("30001");
... ... ...
... ... ...

END

0 Responses to "使用Groovy和Selenium构建一个脱离IDE的Portable的测试环境"