今天分享TestNG测试框架的基础知识,使用TestNG的优点,TestNG的基本注解如何使用,套件、忽略、异常、依赖、参数化、超时等测试该如何进行。
一、TestNG基本介绍
TestNG是Java中的一个测试框架,是一个目前很流行实用的单元测试框架,有完善的用例管理模块,配合Maven能够很方便管理依赖第三方插件。使用TestNG可以做功能、接口、单元、集成的自动化测试,最常见的是结合selenium做功能自动化测试,它使用Java注释去写测试方法。
测试人员一般用TestNG来写自动化测试,开发人员一般用Junit写单元测试,TestNG适合测试人员使用的原因:
1) 比Junit涵盖功能更全面的测试框架;
2) Junit更适合隔离性比较强的单元测试;
3) TestNG更适合复杂的集成测试。
编写一个测试的过程包含以下步骤:
1) 编写测试的业务逻辑并在代码中插入TestNG annotation;
2) 将测试信息添加到testng.xml文件或build.xml中;
3) 运行TestNG。
二、TestNG使用
TestNG应用上相对来说比较简单,把它的注解理解了,相当于会了一大半了。
1、在Maven中引用TestNG
使用Maven作为项目管理工具,需要在pom.xml中添加以下依赖,将groupId、artifactId和version引进来后,就可以使用Maven框架进行自动下载和使用。
org.testng
testng
6.10
2、在IDEA中创建module
新建一个文件夹用于该项目:AutoTest。使用IntelliJ IDEA打开该文件夹(File—>open),在该文件夹上面点击右键—>New—>module(module意思是它都归这个工程管)—>选择Maven点击Next—>填写GroupId和ArtifactId,点击Next—>创建了一个module,点击Finished(GroupId:一般是域名的反写,也作为项目中类的包名,是main目录里java的目录结构;ArtifactId:工程名,也就是根文件夹名)
创建了一个module,被认为工程的标志,根文件夹名前右下角为蓝色的,java前也是蓝色的,resources资源目录文件是图中的文件标志,工程目录结构如图所示:
3、最基本的注解@Test
Module已创建完毕后,就可以开始了解TestNG的基本注解啦。
1)在java文件上右击—>new—>Package,创建一个包,包名:com.test.testng。(在公司,开发一个项目的时候每个功能模块肯定是放在某个包下,一般包名是以:最高域名.公司名/个人名.模块名)
2)在包中创建一个类,这个类就是为了运行TestNG里的代码创建的。点击包右键—>new—>Java Class,输入类名:BasicAnnotation—>OK
3)在pom中引用TestNG。TestNG与IDEA集成的比较好的一点是:假设在pom中没引用TestNG,也会进行提示。
4)创建一个方法:testCase1,在方法前加“@Test”,是最基本的注解,用来把方法标记为测试的一部分。
在@Test为红色时,说明没有import对应的方法,在此我们可以进行设置一下自动优化导入包:
File—>settings—>Editor—>General—>Auto Import,将下图中1和2 进行勾选,1:IDEA将在我们写代码的时候自动棒我们导入需要用到的包,但是有多个同名的类调用不同的包,还是需要手动(Alt+Enter)设置。2:IDEA将在我们写代码的时候自动帮我们优化导入的包,比如自动去掉一些没有用的包。
4、注解之@BeforeMethod和@AfterMethod
除了最基本的注解外,还有标签可以进行标注在这个方法之前或者之后运行。
创建两个方法:beforeMethod和afterMethod, 同时再创建一个testCase2方法—>Run类,输出内容可以更直观理解。注:输入sout回车,即可输出System.out.println()。
可以看到,BeforeMethod/AfterMethod在每个方法运行之前/之后都会运行一次。在以后写测试用例时,在测试方法之前/之后必须要运行的都可以写到BeforeMethod/AfterMethod里。
5、注解之@BeforeClass和@AfterClass
@BeforeClass和@AfterClass是在类运行之前和之后的注解。
创建两个方法:beforeClass和afterClass—>Run类,如下图所示:
@BeforeClass和@AfterClass使用场景举例:在类运行前,是否需要变量赋值、初始化对象等,写完后其它方法里就都可以使用了。
6、注解之@BeforeSuite和@AfterSuite
在注解中,执行顺序非常非常重要。测试套件注解:创建两个方法beforeSuite和afterSuite—>Run类,结果如下图所示。
根据结果可以看到:Suite把class包裹起来了,说明类在运行之前运行了Suite,Suite可以包含多个Class,类是属于某个套件之下的。
7、套件测试
举例讲解一下TestNG里的套件测试,虽然在TestNG里套件测试用到的相对较少,但是也要了解下滴,步骤如下:
1) 之前在java文件中创建了一个包com.test.testng,现在在该包里新建一个包,管理所有套件测试代码(New—>PacKage,包名可以起为:suite)
2) 在suite里创建一个类(New—>Java Class:SuiteConfig-配置类),SuiteConfigs 为了进行所有测试套件的配置,在这儿写测试的套件之前需要运行的方法。
3) 再在suite包中创建一个类,以登录测试为例,(New—> Java Class:LoginTest-登录成功-逻辑控制类),在这儿写测试主要Test标签下面包含的那些方法。
4) 在resources目录下创建testng.xml配置文件,一般来说配置文件叫tesng.xml,但是不是必须的,也可以叫其它名。testing.xml其实是标准的xml文件,实际上与SuiteConfig和LoginTest是有关联关系的。
5) 打开SuiteConfig类,创建两个方法:beforeSuite和afterSuite。
6) 再在Suite包中创建一个类:PayTest-支付成功,与LoginTest相当于一个测试组的,比较好区分。到此为止:目录结构如下图所示:
7) 打开LoginTest,写入方法:loginSogouMall,登录成功。
8) 打开PayTest,写入方法paySuccess,支付成功。
9) 打开配置文件testng.xml,根目录为suite,写入内容如下图所示,此处需要注意test标签必须定义一个名字。Run testing.xml后,根据运行结果可以看到执行顺序为1-2-3-4。
8、忽略测试
忽略测试是指本次测试执行中不想要执行的测试方法,示例如下。
1)在包com.test.testng中创建一个类,New-Java Class:IgnoreTest;
2)在IgnoreTest类中创建两个方法:ignore1和ignore2,根据输出结果可以看到,在@Test标签后加入属性(enabled=false),则可以忽略此测试方法,默认情况下enabled为true。
9、组测试中的方法分组测试
首先介绍一下方法上分组,将方法进行归类。
1) 在包com.test.testng新建一个包,管理所有套件测试代码(New—>PacKage,包名可以起为:groups);
2)在groups包中新建一个类(New—>Java Class,方法名:GroupsOnMethod);
3) 创建4个方法,如下图中所示,注意需要在@Test标签中添加属性groups;
4) 再创建2个方法,如下图所示,在@BeforeGroups和@AfterGroups标签后需要加入分组的名字。
5) 运行类,运行结果为:
6) 通过此种做法,可以将很多个测试方法归类到一个组中,之后进行相关操作。
10、组测试中的类分组测试
上节说的组分组,本节介绍一下类分组,将整个类文件进行分组。
1)在groups包中,创建3个类:GroupsOnClass1;GroupsOnClass2;GroupsOnClass3;
2)在GroupsOnClass1中,创建2个方法,如下图所示,此时需要注意的是@Test标签是写在类上的(标签也是可以写在类上面的),之后添加属性groups;
3) 在GroupsOnClass2中,创建2个方法,与GroupsOnClass1相似,相当于两个班的学生;
4) 在GroupsOnClass3中,创建2个方法,如下图所示;
5)在resources目录中创建一个xml文件:GroupsOnClass.xml,用该文件进行驱动,内容和运行结果如下图所示,运行了所有的组;
6) 只运行一部分组,书写及配置方法,如下图所示,结果只运行groups名字为stu的类。
11、异常测试
在我们期望结果为某一个异常的时候,会用到异常测试。比如:传入某些不合法的参数,程序抛出异常。
1)新建一个类,ExpectedException;
2)创建2个方法,如下图所示,异常测试中,使用到了@Test标签中的expectedExceptions属性,根据结果可以看到成功了一条(即方法
3),需要在方法中加入语句throw new RuntimeException(),需要注意的是,该语句后的内容不运行,所以一定要注意顺序。
12、依赖测试
TestNGINX依赖方法是指本个测试方法执行的时候依赖于其它方法。举例说明:
1)创建一个Java类:DependTest;
2)创建2个方法:test1和test2,其中test2依赖于test1,即test1要先执行,如果test1失败,则test2不执行。此处用到@Test标签的属性dependsOnMethods,具体写法如下图所示,只运行test2,结果可以看到test1也被执行了;
3)在test1中加入语句:thrownew RuntimeException(),抛出异常,这时候再运行test2结果会提示1 failed,1 ignored。当做依赖测试的时候,被依赖的方法若执行失败,则依赖的方法就会被忽略掉不再执行,实际场景中可以做前置条件的时候使用。
13、参数化测试-xml文件参数化
TestNGINX允许在TestMethod以及@Before/After类注解、@Factory类注解的方法中传入参数。参数传递的方式有两种,一种是借助xml文件配置,另一种是以编码的方式传递参数。本小结介绍借助xml文件配置的方式。示例:
1)新建一个包parameter(New->Package);
2)新建一个类ParameterTest,类中新建一个方法parameTest,如下图所示,此处用到了一个新标签:@Parameters;
3)在resources目录下,新建一个xml配置文件,用于传参,内容如下图所示,即可运行成功。
14、参数化测试-DataProvider参数化
上小结讲述了如何通过xml传递参数,本节讲述另一种方式。
1) 新建一个类DataProviderTest;
2) 新建两个方法,testDataprovide和ProviderData,ProviderData方法提供数据来源,返回形式Object。注意testDataprovide方法上@Test标签中dataProvider的属性值与ProviderData方法上@DataProvider标签中name的属性值要一致。
以上就是使用DataProvider如何传数据,除此之外,DataProvider支持根据方法进行参数传递,通过不同的方法传递不同的参数,示例:
新建三个方法:test1、test2和methodDataTest,methodDataTest方法中必须填入Methodmethod,代表自动会将test1和test2方法传递进来,针对不同的方法名传递不同的参数。
15、超时测试
超时测试比较简单,主要是使用到@Test标签中的timeOut属性,单位为毫秒,示例:
1)新建一个类TimeOutTest;
2)新建两个方法,testSuccess和testFail,方法一在3000毫秒内给予响应,不抛出异常,运行成功,方法2在2000毫秒内没有得到响应,抛出异常,运行失败。
超时测试使用场景,例:在测试过程中某一段时间后无反应,想跳过,则可以使用超时测试。
来源:图文来自网络,如有侵权请联系删除
文章来源: 松勤网
-
如何挽回失去的爱情 天涯比邻是什么意思 初心不变的唯美句子 深夜文案 表达书香气息的优美句子 夸人跳舞跳得好的句子 40岁女人网名简单干净 责任担当的励志句子 高情商晒美食的句子 表达真诚感谢的短句 身边那些有特点的人作文300字 lol名字符号 老公生日简单温馨的话 浪漫短句3个字 游戏名称男生冷酷霸气 儿歌童谣顺口溜 随遇而安造句 形容一个人脸皮厚的幽默句子 祝福同事前程发展好的祝福语 高三毕业祝福语 描写时间过得快的一段话 一个人熬过了所有的说说 朋友圈晒风景的说说 女人感慨岁月的句子 形容少年意气风发的诗句 不甘心却又无能为力的句子 节约用水的优美句子 防疫给自己写个人先进事迹 90后的人心酸句子 抖音洋气女名(0) 回复 (0)
-
讨债公司/蓝月传奇辅助/蓝月辅助(0) 回复 (0)