zoukankan      html  css  js  c++  java
  • testng教程之testng.xml的配置和使用,以及参数传递

    testng.xml

    testng.xml是为了更方便的管理和执行测试用例,同时也可以结合其他工具

    You can invoke TestNG in several different ways: 你可以用以下三种方式执行测试

    • With a testng.xml file           直接run as test suite
    • With ant                            使用ant
    • From the command line      从命令行
    • eclipse                              直接在eclipse执行

    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.

    • parallel="classes"  每个测试用例class级别多线程
    • thread-count="3" 线程数为5,可同时执行3个case
    • preserve-order="true"  根据官方解释(If you want the classes and methods listed in this file to be run in an unpredictible order, set the preserve-order attribute to false)设置为false乱序执行,设置为true会按照你配置执行
    • Parameter标签传递参数

                          

    <?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:UsersworkspaceDemoParametertestng.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>
    43 <target name="runTestng" depends="compile">
    44 <testng classpathref="runpath" outputDir="test-output"
    45 haltonfailure="true"
    46 useDefaultListeners="false"
    47 listeners="org.uncommons.reportng.HTMLReporter,org.testng.reporters.FailedReporter" >
    48 <xmlfileset dir="${basedir}" includes="Parametertestng.xml"/>
    49 <jvmarg value="-Dfile.encoding=UTF-8" />
    50 <sysproperty key="org.uncommons.reportng.title" value="AutoMation TestReport" />
    51 </testng>
    52 </target>
    53 </project>
    View Code

    接下在在命令行执行: ant runTestng

    运行结果:

    C:UsersworkspaceDemo>ant runTestng
    Buildfile: C:UsersworkspaceDemouild.xml
    [echo] Start selenium Grid
    [echo] import libs

    clean:
    [delete] Deleting directory C:UsersYoungworkspaceDemouild

    compile:
    [echo] mkdir
    [mkdir] Created dir: C:UsersYoungworkspaceDemouildclasses
    [javac] C:UsersYoungworkspaceDemouild.xml:25: warning: 'includeantrunt
    ime' was not set, defaulting to build.sysclasspath=last; set to false for repeat
    able builds
    [javac] Compiling 21 source files to C:UsersYoungworkspaceDemouildcla
    sses

    runTestng:
    [testng] [TestNG] Running:
    [testng] C:UsersworkspaceDemoParametertestng.xml
    [testng]
    [testng] [TestRunner] Starting executor for test TestDebug with time out:2147
    483647 milliseconds.
    [testng] parameter1 is parameter1
    [testng] parameter2 is 123
    [testng] This is beforeClass method .The Value of a is: 1
    [testng] This is beforeMethod method. The Value of a is: 2
    [testng] This is Test method1 .The Value of a is: 3
    [testng] This is AfterMethod Method .The Value of a is: 6
    [testng] This is beforeMethod method. The Value of a is: 2
    [testng] This is Test method2 .The Value of a is: 4
    [testng] This is AfterMethod Method .The Value of a is: 6
    [testng] This is AfterClass Method .The Value of a is: 5
    [testng]
    [testng] ===============================================
    [testng] Suite
    [testng] Total tests run: 3, Failures: 0, Skips: 0
    [testng] ===============================================
    [testng]
    [testng] [TestNG] Time taken by [FailedReporter passed=3 failed=0 skipped=0]:
    0 ms
    [testng] [TestNG] Time taken by org.uncommons.reportng.HTMLReporter@65fe58e0:
    120 ms

    BUILD SUCCESSFUL
    Total time: 5 seconds

    原文:https://blog.csdn.net/xfxf996/article/details/81413560

  • 相关阅读:
    说一下 session 的工作原理?
    说一下 JSP 的 4 种作用域?
    MVC的各个部分都有那些技术来实现?如何实现?
    window.onload()函数和jQuery中的document.ready()有什么区别?
    JQuery有几种选择器?
    jQuery 库中的 $() 是什么?
    按照锁的粒度分数据库锁有哪些?锁机制与InnoDB锁算法?
    隔离级别与锁的关系?
    Java语言基础(二)之数据类型转换、运算符、方法入门
    Java语言基础(一)
  • 原文地址:https://www.cnblogs.com/peachh/p/12013394.html
Copyright © 2011-2022 走看看