标签:verify pos term package echo 直接 delete star eclipse
testng.xml是为了更方便的管理和执行测试用例,同时也可以结合其他工具
You can invoke TestNG in several different ways: 你可以用以下三种方式执行测试
textng.xml 基本格式如下:
<test name="Regression1">
<groups>
<run>
<exclude name="brokenTests"  />
<include name="checkinTests"  />
</run>
</groups>
<classes>
<class name="test.IndividualMethodsTest">
<methods>
<include name="testMethod" />
</methods>
</class>
</classes>
</test>
suite:定义一个测试套件,可包含多个测试用例或测试group
suite 里可以设置是否使用多线程:
parallel="methods": TestNG will run all your test methods in separate threads. Dependent methods will also run in separate threads but they will respect the order that you specified.
parallel="tests": TestNG will run all 
the methods in the same <test> tag in the same thread, but each 
<test> tag will be in a separate thread. This allows you to group 
all your classes that are not thread safe in the same <test> and 
guarantee they will all run in the same thread while taking advantage of
 TestNG using as many threads as possible to run your tests.
parallel="classes": TestNG will run all
 the methods in the same class in the same thread, but each class will 
be run in a separate thread.
parallel="instances": TestNG will run 
all the methods in the same instance in the same thread, but two methods
 on two different instances will be running in different threads.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite" parallel="classes" thread-count="3">
<test verbose="2" preserve-order="true" name="TestDebug">  
<parameter name="driverName" value="chrome" />
<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" />
<class name="com.dbyl.tests.loginTest" />
</classes>
</test> <!-- Test -->
</suite> <!-- Suite -->
参数怎么使用?
这要在case里添加@Parameters 的annotations
如果有多个parameter,可以一次传入
package com.dbyl.tests;
import org.testng.annotations.Parameters;
import org.testng.annotations.Test;
/**
 * This Test for verify Parameter annotation
 * @author Young
 *
*/
public class passParameter {
/**
     * 
     * @param parameter1
     * @param parameter2
*/
    @Parameters({"parameter1","parameter2"})
    @Test(groups="parameter")
public void parameter(String parameter1,int parameter2 )
    {
        System.out.println("parameter1 is "+parameter1 );
        System.out.println("parameter2 is "+parameter2 );
    }
}
其中testng的配置文件为:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite" parallel="classes" thread-count="5">
<test verbose="2" preserve-order="true" name="TestDebug">  
<parameter name="parameter1" value="parameter1" />
<parameter name="parameter2" value="123" />
<classes>
<class name="com.dbyl.tests.passParameter" />
<class name="com.dbyl.tests.TestngExample" />
</classes>
</test> <!-- Test -->
</suite> <!-- Suite -->
这里使用两个parameter标签,传递两个参数
执行结果如下:
[TestNG] Running:
 C:\Users\workspace\Demo\Parametertestng.xml
[TestRunner] Starting executor for test TestDebug with time out:2147483647 milliseconds.
parameter1 is parameter1
parameter2 is 123
接下来尝试从ant命令行执行test suite
首先在 build配置文件加入:
<taskdef resource="testngtasks" classpath="testng.jar"/>
在target执行文件设置testng.xml路径
<xmlfileset dir="${basedir}" includes="Parametertestng.xml"/>
详细:
 1 <?xml version="1.0"?>
 2 <project name="Demo" default="run" basedir=".">
 3     <echo  message="Start selenium Grid" />
 4     <echo  message="import libs" />
 5     <path id="run.classpath">
 6         <fileset dir="${basedir}">
 7             <include name="lib/poi/*.jar" />
 8             <include name="lib/poi/lib/*.jar" />
 9             <include name="lib/testng.jar" />
10             <include name="lib/sikuli-script.jar" />
11             <include name="lib/*.jar" />
12         </fileset>
13         <fileset dir="${basedir}/lib/selenium">
14             <include name="selenium-java-2.45.0.jar" />
15             <include name="libs/*.jar" />
16         </fileset>
17     </path>
18     <taskdef name="testng" classname="org.testng.TestNGAntTask" classpathref="run.classpath" />
19     <target name="clean">
20         <delete dir="build"/>
21     </target>
22     <target name="compile" depends="clean">
23         <echo message="mkdir"/>
24         <mkdir dir="build/classes"/>
25         <javac srcdir="src" destdir="build/classes" debug="on" encoding="UTF-8">
26             <classpath refid="run.classpath"/>
27         </javac>
28     </target>
29     <path id="runpath"> 
30          <path refid="run.classpath"/> 
31          <pathelement location="build/classes"/> 
32        </path> 
33     <target name="run" depends="compile">
34         <testng  classpathref="runpath"  outputDir="test-output" 
35             haltonfailure="true"
36             useDefaultListeners="false"   
37             listeners="org.uncommons.reportng.HTMLReporter,org.testng.reporters.FailedReporter" >  
38             <xmlfileset dir="${basedir}" includes="testng.xml"/>
39             <jvmarg value="-Dfile.encoding=UTF-8" />
40             <sysproperty key="org.uncommons.reportng.title" value="AutoMation TestReport" /> 
41         </testng>
42         </target>