自动化测试之路之TestNG学习


TestNG是Java中的一个测试框架, 类似于JUnit 和NUnit,  功能都差不多, 只是功能更加强大,使用也更方便

Java中已经有一个JUnit的测试框架了。  TestNG比JUnit功能强大的多。  测试人员一般用TestNG来写自动化测试。  开发人员一般用JUnit写单元测试。

1  TestNG如何执行测试

第一种  直接执行:右键要执行的方法,  点Run As ->TestNG Test

第二种   通过testng.xml文件来执行. 把要执行的case, 放入testng.xml文件中。 右键点击testng.xml,  点Run As(类似我们代码的amm.xml)

第三种  TestNG组测试

TestNG中可以把测试用例分组,这样可以按组来执行测试用例比如:

复制代码

package TankLearn2.Learn;

import org.testng.annotations.Test;

public class GroupTest {

    @Test(groups = {"systemtest"})

    public void testLogin(){

        System.out.println("this is test login");

    }

    @Test(groups = {"functiontest"})

    public void testOpenPage(){

        System.out.println("this is test Open Page");

    }

}

复制代码

然后在testng.xml中 按组执行测试用例

复制代码

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >

<suite name="Suite1">

    <test name="test1">

        <groups>

        <run>

        <include name="functiontest" />

        </run>

    </groups>

    </test>

</suite>

2 TestNG 异常测试

estNG通过@Test(expectedExceptions)  来判断期待的异常, 并且判断Error Message

3 TestNG参数化测试

第一种: testng.xml 方式使代码和测试数据分离,方便维护

第二种:@DataProvider能够提供比较复杂的参数。 (也叫data-driven testing)

4 TestNG忽略测试

有时候测试用例还没准备好, 可以给测试用例加上@Test(enable = false),  来禁用此测试用例

5 TestNG 依赖测试(某个方法必须依赖其他方法)dependsOnMethods()

6 TestNG默认情况下,会生产两种类型的测试报告HTML的和XML的。 测试报告位于 "test-output" 目录下.

7 TestNG https://blog.csdn.net/d6619309/article/details/52435084(讲的比较好的博客,每种注解的执行顺序有详细的讲解)

https://blog.csdn.net/taiyangdao/article/category/6352844/2(TestNG延伸)

8 suite  test class method  groups

9某些参数的意义

alwaysRun  对于在方法之前的调用(BeforeSuite,...除了beforeGroups),若为true,这个配置方法无视其所属的组而运行.对于在方法之后的调用(afterSuite, afterClass, ...),若为true, 这个配置方法会运行,即使其之前一个或者多个被调用的方法失败或者被跳过。

enabled  是否执行注解的测试。

inheritGroups 

默认是true,则此方法会从属于在类级由@Test注解中所指定的组。举例如下:

@Test(groups = "Tomandy")

public class TestNGHelloWorld {

@BeforeClass(inheritGroups = false) //如果xml文件配置按Tomandy组执行的话,@BeforeClass注解的方法不会被执行

public void setUp(){

System.out.println("setUp!");

}

@Test(groups = "Tom")

public void helloWorld(){

System.out.println("My first TestNG testCase!");

}

}

10 xml 里面参数的意义

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")

 11 DataProvider和Factory

@DataProvider:为测试用例提供参数,有多少组参数就会执行多少次用例,因此它是让一个测试类实例的某个方法执行多次,每次执行都是同一个实例

@Factory:创建一个测试类的多个实例,每个实例中的所有测试用例都会被执行,每次执行采用的是不同实例

12 注解详注之并发

TestNG将在同一个线程中运行相同test标签中的所有方法,不同test 标签下的用例在不同的线程执行。

13 编码执行TestNG

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

推荐阅读更多精彩内容