selenium+testng+ant+jenkins 手記


會不會搭建測試平台是一般測試工程師和高級測試工程師分水嶺 ----tobecrazy

我們項目有現成的測試平台,使用的是selenium grid+testng+ant+jenkins+VM

 

但是我平時用的是selenium+testng並未體驗過使用ant 和jenkins,今天心血來潮嘗試使用一下jenkins.

Jenkins簡介:

  •  Jenkins是一個開源框架
  •  Jenkins可執行重復的jobs,主要使用在兩方面 

            1.可持續build或test project

            2.監控外部執行的jobs

  •   自動build發郵件。。。。。

    了解更多看https://wiki.jenkins-ci.org/display/JENKINS/Meet+Jenkins

    首先安裝Jenkins,下載windows平台的版本

    由於安裝比較簡單,這里就不再介紹

安裝ant,下載ant zip文件,解壓到C:\Program Files\apache-ant-1.9.4

在系統變量添加ANT_HOME

之后再CMD運行ant -version

若顯式:Apache Ant(TM) version 1.9.4 compiled on April 29 2014 

說明ant 配置成功

  1. 使用ant 編譯工程,必須有一個xml文件,默認build.xml
  2. 每個build文件配置一個default target,執行ant命令會執行這個target

首先了解一下簡單使用ant

使用note pad 寫一個class,保存為Test java

public class Test {
    /**
     * @author tobecrazy
     * 
     */
    public static void main(String[] args) {
    System.out.println("This ANT HOME ");
    System.out.println(System.getenv("ANT_HOME"));

    }

}

在cmd嘗試編譯:javac Test.java

如官方沒有報錯,恭喜你,可以進行下一步

使用ant所做的操作和命令行輸入是一樣的,只不過所有的命令轉換為xml標簽:

這次配置如下:

每個target是一個操作,clean是刪除build目錄,compile是編譯,run是執行java class

<?xml version="1.0"?>
<project name="AntTest" default="run" basedir="." >
<!-- 默認target是run,運行ant命令直接執行run -->
    <echo message="The base dir is: ${basedir}" />
    <target name="clean">
       <delete dir="build"/>
    </target>
    <target name="compile" depends="clean">
    <!-- 編譯java文件依賴clean -->
       <mkdir dir="build/classes"/>
        <javac srcdir="src" destdir="build/classes"/>
    </target>
    
    <target name="run" depends="compile">
    <!-- 運行class文件,依賴compile -->
     <echo message="Compile dir is:  ${basedir}\build\classes" />
      <java classname="Test">            
      <classpath>               
      <pathelement path="build/classes"/>            
      </classpath>        
      </java>
    </target>
</project>

之后在命令行輸入ant(cmd切換到該目錄)

結果如下:

        

D:\AntTest>ant
Buildfile: D:\AntTest\build.xml
[echo] The base dir is: D:\AntTest

clean:
[delete] Deleting directory D:\AntTest\build

compile:
[mkdir] Created dir: D:\AntTest\build\classes
[javac] D:\AntTest\build.xml:11: warning: 'includeantruntime' was not set, d
efaulting to build.sysclasspath=last; set to false for repeatable builds
[javac] Compiling 1 source file to D:\AntTest\build\classes

run:
[echo] Compile dir is: D:\AntTest\build\classes
[java] This ANT HOME
[java] C:\Program Files\apache-ant-1.9.4

BUILD SUCCESSFUL
Total time: 1 second

為了配合使用selenium webdriver打開eclipse創建名為Demo的項目

接下來就是使用Jenkins,如果你的Jenkins安裝成功,打開http://localhost:8080/會顯示Jenkins主頁

點擊新建->輸入項目名->選擇“構建一個自由風格的軟件項目”->構建->增加構建步驟->選擇invoke ANT
接下來配置如下:

 

此時准備ant build.xml放到工程的根目錄

build.xml內容如下,testng 和selenium的jar包需要加載,所以設置

<path id="run.classpath">
由於項目使用的UTF-8編碼,在編譯時報錯所以添加
  <javac srcdir="src" destdir="build/classes" debug="on" encoding="UTF-8">


<?xml version="1.0"?>
<project name="Demo" default="run" basedir=".">
    <echo  message="import libs" />
    <path id="run.classpath">
        <fileset dir="${basedir}">
            <include name="lib/testng.jar" />
            <include name="lib/sikuli-script.jar" />
        </fileset>
        <fileset dir="${basedir}/lib/selenium">
            <include name="selenium-java-2.45.0.jar" />
            <include name="libs/*.jar" />
        </fileset>
    </path>
    <taskdef name="testng" classname="org.testng.TestNGAntTask" classpathref="run.classpath" />
    <target name="clean">
        <delete dir="build"/>
    </target>
    <target name="compile" depends="clean">
        <echo message="mkdir"/>
        <mkdir dir="build/classes"/>
        <javac srcdir="src" destdir="build/classes" debug="on" encoding="UTF-8">
            <classpath refid="run.classpath"/>
        </javac>
    </target>
    <path id="runpath"> 
         <path refid="run.classpath"/> 
         <pathelement location="build/classes"/> 
       </path> 
    <target name="run" depends="compile">
        <testng  classpathref="runpath"  outputDir="test-output">
            <xmlfileset dir="${basedir}" includes="testng.xml"/>
            <jvmarg value="-ea" />
        </testng>
    </target>
</project>

更多ant和testng  classname="org.testng.TestNGAntTask"是固定格式

參考:http://testng.org/doc/index.html

 

接下來在項目添加幾個case,項目目錄如下

准備testng的配置文件如下,放在工程的根目錄下

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite" parallel="none">
  <test name="Test">
  <groups> 
      <run> 
         <include name="Case1" /> 
         <include name="MapTest" /> 
         <include name="JDaddress" /> 
         <include name="useCookies" /> 
       </run> 
    </groups> 
     <classes>
      <class name="com.dbyl.tests.Case1"/>
      <class name="com.dbyl.tests.JDaddress"/>
      <class name="com.dbyl.tests.UseCookieLogin"/>
      <class name="com.dbyl.tests.MapTest"/>
    </classes>
  </test> <!-- Test -->
</suite> <!-- Suite -->

 

接下來就是見證奇跡的時候:

在Jenkins里選擇構建

Building in workspace C:\Program Files (x86)\Jenkins\workspace\Demo
[workspace] $ cmd.exe /C '""C:\Program Files\apache-ant-1.9.4\bin\ant.bat" -file Demo run && exit %%ERRORLEVEL%%"'
Buildfile: C:\Users\Young\workspace\Demo\build.xml
     [echo] import libs

clean:
   [delete] Deleting directory C:\Users\Young\workspace\Demo\build

compile:
     [echo] mkdir
    [mkdir] Created dir: C:\Users\Young\workspace\Demo\build\classes
    [javac] C:\Users\Young\workspace\Demo\build.xml:21: warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds
    [javac] Compiling 6 source files to C:\Users\Young\workspace\Demo\build\classes

run:
   [testng] [TestNG] Running:
   [testng]   C:\Users\Young\workspace\Demo\testng.xml
   [testng] 
   [testng] Fast test
   [testng] Slow test
   [testng] Starting ChromeDriver (v2.9.248315) on port 43260
   [testng] Starting ChromeDriver (v2.9.248315) on port 20660
   [testng] Starting ChromeDriver (v2.9.248315) on port 13803
   [testng] cookie write to file
。。。。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM