(三)TestNG学习之路—TestNG.xml/YAML

目录

(一)TestNG学习之路—HelloWorld入门
(二)TestNG学习之路—注解及属性概览
(三)TestNG学习之路—TestNG.xml/YAML
(四)TestNG学习之路—注解详述之@Test
(五)TestNG学习之路—注解详述之参数化
(六)TestNG学习之路—注解详述之@Factory
(七)TestNG学习之路—注解详述之忽略测试
(八)TestNG学习之路—注解详述之并发
(九)TestNG学习之路—失败测试重跑
(十)TestNG学习之路—编码执行TestNG
(十一)TestNG学习之路—BeanShell高级用法
(十二)TestNG学习之路—注解转换器
(十三)TestNG学习之路—方法拦截器
(十四)TestNG学习之路—TestNG监听器
(十五)TestNG学习之路—依赖注入
(十六)TestNG学习之路—测试报告
(十七)基于TestNG+Rest Assured+Allure的接口自动化测试框架

前言

文章《TestNG学习之路—HelloWorld入门》提到了ant、xml、命令行三种方式来执行测试,该篇文章将详细讲述xml执行方式。

testng.xml详解

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<!--suite有以下属性:
name:suite名称,测试报告中展现
verbose: 在控制台中如何输出,该设置不影响测试报告
allow-return-values:如果设置为false,被@Test注解且有return的方法被忽略执行
annotations:如果为"javadoc", 则使用javadoc注解,否则使用jdk注解
configfailurepolicy:字典:continue,skip,如果@Before*方法失败,TestNG是否应该继续执行套件中的其余测试,默认为skip
data-provider-thread-count:并发执行data-provider的线程数,默认大小为10
group-by-instances:默认情况下,依赖方法按类分组。例如,如果方法b()依赖于方法a(),并且您有几个包含这些方法的类实例(因为数据提供者的工厂),
那么调用顺序将为:signIn("us"),signIn("uk"),signOut("us"),,signOut("uk")。group-by-instances设置为true的话,调用顺序将为:signIn("us"),signOut("us"),signIn("uk"),signOut("uk")
guice-stage:创建父注入器的stage
junit:是否以junit模式运行
object-factory:用于实现IObjectFactory的类,实例化测试对象
parallel:是否多线程并发运行测试,默认为false,字典:classes,methods,instances,tests,true,false
parent-module:用于创建所有guice注入器的父注入器的模块
preserve-order:默认情况下,TestNG将按照在XML文件配置的顺序运行测试。如果希望以不可预知的顺序运行文件中列出的类和方法,可将preserve-order属性设置为false
skipfailedinvocationcounts:是否跳过失败的调用
thread-count:使用并行模式,要使用的线程池的大小。
time-out:为具体执行单元设定一个超时时间,方法(parallel="methods")或测试(parallel="tests")
-->
<suite name="Suite" verbose="1">

    <!--一个suite可以包含多个test,test有以下属性:
    name:这个测试的名称(将出现在报告中)
    annotations:同suite套件属性
    allow-return-values:同suite套件属性
    verbose:同suite套件属性
    enabled:启用/禁用当前测试的标志。默认值:true
    group-by-instances:同suite套件属性
    junit:同suite套件属性
    parallel:同suite套件属性
    preserve-order:同suite套件属性
    skipfailedinvocationcounts:同suite套件属性
    thread-count:同suite套件属性
    time-out:同suite套件属性
    -->
    <test name="test">
        <!--指定执行包-->
        <packages>
            <!--包名称-->
            <package name="com">
            </package>
        </packages>
    </test>

    <!--testng.xml中只能设置一个<suite>标签,可通过<suite-files >标签实现多个测试集设置。-->
    <suite-files>
        <suite-file path="testNG.xml"/>
        <suite-file path="testNG.xml"/>
    </suite-files>

    <!--设置监听器,后续文章详解-->
    <listeners>
        <listener class-name="TestNGHelloWorld1"/>
    </listeners>

    <!--方法拦截器,后续文章详解-->
    <method-selectors>
        <method-selector>
            <selector-class name="TestNGHelloWorld1"/>
        </method-selector>
    </method-selectors>

    <!--方法拦截器,后续文章详解-->
    <method-selectors>
        <method-selector>
            <script language="java"/>
        </method-selector>
    </method-selectors>

    <test name="TestNG1">
        <groups>
            <!--组中组,即test4包含了test1和test3两个组-->
            <define name="test4">
                <include name="test1"/>
                <include name="test3"/>
            </define>

            <!--运行test4组,不运行test2组-->
            <run>
                <include name="test4"/>
                <exclude name="test2"/>
            </run>

            <!--test3组依赖于test1,test2组,多个依赖用空格隔开-->
            <dependencies>
                <group name="test3" depends-on="test1 test2"/>
            </dependencies>
        </groups>

        <!--类-->
        <classes>
            <class name="TestNGHelloWorld1"/>
        </classes>
    </test> <!-- TestNG -->

    <test name="TestNG2">
        <!--入参,分别为参数名和参数值-->
        <parameter name="str" value="Test1"/>

        <classes>
            <class name="TestNGHelloWorld1">
                <!--类中的方法-->
                <methods>
                    <!--执行该方法-->
                    <include name="helloWorldTest1"/>
                    <!--不执行该方法-->
                    <exclude name="helloWorldTest2"/>
                </methods>
            </class>
        </classes>

    </test>
</suite> 

YAML

testNG支持YAML作为指定套件文件的另一种方法。例如,以下XML文件:

<suite name="SingleSuite" verbose="2" thread-count="4">
 
  <parameter name="n" value="42" />
 
  <test name="Regression2">
    <groups>
      <run>
        <exclude name="broken" />
      </run>
    </groups>
 
    <classes>
      <class name="test.listeners.ResultEndMillisTest" />
    </classes>
  </test>
</suite>

对应的YAML版本如下:

name: SingleSuite
threadCount: 4
parameters: { n: 42 }
 
tests:
  - name: Regression2
    parameters: { count: 10 }
    excludedGroups: [ broken ]
    classes:
      - test.listeners.ResultEndMillisTest

参考资料

testNG.xml各参数及属性详解
testNG官网

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,348评论 6 491
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,122评论 2 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 156,936评论 0 347
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,427评论 1 283
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,467评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,785评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,931评论 3 406
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,696评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,141评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,483评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,625评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,291评论 4 329
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,892评论 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,741评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,977评论 1 265
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,324评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,492评论 2 348

推荐阅读更多精彩内容