TestNG 101
最近看了点TestNG,做个入门笔记
0.Maven + TestNG
0a. 创建Maven 项目,pom中添加依赖(可能还需要安装TestNG插件
<dependencies>
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>6.8.21</version>
</dependency>
<!--报告-->
<dependency>
<groupId>org.uncommons</groupId>
<artifactId>reportng</artifactId>
<version>1.1.4</version>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.google.inject</groupId>
<artifactId>guice</artifactId>
<version>3.0</version>
<scope>test</scope>
</dependency>
</dependencies>
0b.项目结构
文件路径是在test目录下

1. 一个简单的case
package com.lernenTestNG; //1. 常用的import的包
import org.testng.annotations.*;
import org.testng.Assert; //1. 实际的testcase为类中被@Test注释的方法
public class Lecktion1 {
@BeforeTest
public void y_beforeTest(){
System.out.println("**** BeforeTest ****");
} @BeforeMethod
public void y_beforeMethod(){
System.out.println("**** BeforeMethod ****");
} @Test
public void y_Test1() {
int a = 1;
int b = 2;
int res = a + b;
System.out.println("y_Test1()");
System.out.println("result=" + res);
Assert.assertEquals(res,3); } @Test
public void y_Test2() {
int a = 2;
int b = 3;
int res = a + b;
System.out.println("y_Test2()");
System.out.println("result=" + res);
// 3. Assert.XXX只能在testcase中使用
Assert.assertEquals(res,5); } @Test
public void y_Test3() {
int a = 2;
int b = 4;
int res = a + b;
System.out.println("y_Test3()");
System.out.println("result=" + res);
Assert.assertEquals(res,5); } @AfterMethod
public void y_AfterMethod(){
System.out.println("**** AfterMethod ****");
} @AfterTest
public void y_AfterTest(){
System.out.println("**** AfterTest ****");
}
}
2.常用注解
2a. @Test ——测试执行主体,作用域为Public
@Test 的可选参数
// 多个参数可以如下使用
// @Test(dataProvider = "",dependsOnGroups = "",groups = {"",""}) @Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD, ElementType.TYPE, ElementType.CONSTRUCTOR})
public @interface Test {
String[] groups() default {}; boolean enabled() default true; /** @deprecated */
@Deprecated
String[] parameters() default {}; String[] dependsOnGroups() default {}; String[] dependsOnMethods() default {}; long timeOut() default 0L; long invocationTimeOut() default 0L; int invocationCount() default 1; int threadPoolSize() default 0; int successPercentage() default 100; String dataProvider() default ""; Class<?> dataProviderClass() default Object.class; boolean alwaysRun() default false; String description() default ""; Class[] expectedExceptions() default {}; String expectedExceptionsMessageRegExp() default ".*"; String suiteName() default ""; String testName() default ""; /** @deprecated */
boolean sequential() default false; boolean singleThreaded() default false; Class retryAnalyzer() default Class.class; boolean skipFailedInvocations() default false; boolean ignoreMissingDependencies() default false; int priority() default 0;
}
2b. @BeforeTest、@BeforeClass、@BeforeMethod
2c. @AfterTest、@AfterClass、@AfterMethod
——测试前后setup,teardown,具体执行顺序如名称所示
2d. @DetaProvider ——数据驱动
public class Lecktion2 {
//注意大小写
@Test(dataProvider = "dp")
public void y_test_dp(int a, int b, int res){
System.out.println("a is "+ a +", b is " + b + ", res is " + res);
Assert.assertEquals(a+b,res);
}
//@DataProvider只支持修饰方法,源码就是这么写的。。。这边可以改成读取文件、或是其他地方得到数据
@DataProvider
public Object[][] dp(){
return new Object[][]{
{1,2,3},
{4,5,6},
{1,1,2}};
}
//调用三次y_test_dp,所以y_AfterMethod也会执行三次
@AfterMethod
public void y_AfterMethod(){
System.out.println("**** AfterMethod ****");
}
}
2e. @Pataneters ——接受配置文件testng.xml中同名参数到测试用例中使用
引用某个触的文档:http://www.cnblogs.com/TankXiao/p/3888070.html
package TankLearn2.Learn; import org.testng.annotations.Parameters;
import org.testng.annotations.Test; public class ParameterizedTest1 { @Test
@Parameters("test1")
public void ParaTest(String test1){
System.out.println("This is " + test1);
}
}
testng.xml
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="Suite1">
<parameter name="test1" value="Tank" />
<parameter name="test1" value="Xiao" />
<test name="test12">
<classes>
<class name="TankLearn2.Learn.ParameterizedTest1" />
</classes>
</test>
</suite>
3.testng.xml
码ing
TestNG 101的更多相关文章
- selenium第一课(selenium+java+testNG+maven)
selenium介绍和环境搭建 一.简单介绍 1.selenium:Selenium是一个用于Web应用程序测试的工具.Selenium测试直接运行在浏览器中,就像真正的用户在操作一样.支持的浏览器包 ...
- Selenium+TestNG+Maven(2)
转载自http://www.cnblogs.com/hustar0102/p/5885115.html selenium介绍和环境搭建 一.简单介绍 1.selenium:Selenium是一个用于W ...
- MyEclipse TestNG插件安装与配置
MyEclipse TestNG插件安装与配置 by:授客 QQ:1033553122 测试环境 jdk1.8.0_121 myeclipse-10.0-offline-installer-win ...
- Selenium (3) —— Selenium IDE + Firefox录制登录脚本(101 Tutorial)
Selenium (3) -- Selenium IDE + Firefox录制登录脚本(101 Tutorial) selenium IDE版本: 2.9.1 firefox版本: 39.0.3 参 ...
- testng testcase失败重试
简单介绍 需求场景:测试移动端应用,常会因为点击失效.网络延迟大等原因导致测试脚本失败.这时,需要自动重新运行失败的脚本,直到脚本成功通过或者到达限定重试次数. 解决方案:实现testng的IRetr ...
- TestNg学习一
简介 TestNG是Java中的一个测试框架, 类似于JUnit 和NUnit, 功能都差不多, 只是功能更加强大,使用也更方便 Java中已经有一个JUnit的测试框架了. TestNG比JU ...
- testNG xml文件详解
网上看到一篇整理的非常详细的xml文件详解,分享一下: 1 <?xml version="1.0" encoding="UTF-8"?> 2 < ...
- java 测试框架 TestNG
Java中print.printf.println的区别 printf主要是继承了C语言的printf的一些特性,可以进行格式化输出 print就是一般的标准输出,但是不换行 println和prin ...
- selenium+java+testNG+maven环境搭建
一.简单介绍 1.selenium: Selenium是一个用于Web应用程序测试的工具.Selenium测试直接运行在浏览器中,就像真正的用户在操作一样.支持的浏览器包括IE.Mozilla Fir ...
随机推荐
- NC_Verilog中的工具ICC
Cadence中的Incisive Comprehensive Coverage(ICC) solusion提供在仿真中的覆盖率分析. ICC中的覆盖率类型有两大类: 1)Code Coverage: ...
- ActiveMQ 集群负载平衡
目前的架构: 负载均衡方案:========================================= 第二种方案呢,假设我们整个应用是个食堂,这个食堂里面有好多饭口,每个饭口有好多大爷大妈( ...
- Linux命令: 查找文件中的字符串
①cat filename | grep 'string' ②编辑模式查找,/string, 依次敲入下面的命令 vim filename e i ESC /string 从光标位置开始往后查找第一个 ...
- Python 面向对象教程
总结:函数式的应用场景 –> 各个函数之间是独立且无共用的数据. 面向对象三大特性 面向对象的三大特性是指:封装.继承和多态. 一.封装 封装,顾名思义就是将内容封装到某个地方,以后再去调用被封 ...
- [转] Python的import初探
转载自:http://www.lingcc.com/2011/12/15/11902/#sec-1 日常使用python编程时,为了用某个代码模块,通常需要在代码中先import相应的module.那 ...
- ELK学习笔记之ElasticSearch简介
0x00 什么是Elasticsearch Elasticsearch (ES)是一个基于 Lucene 的开源搜索引擎,它不但稳定.可靠.快速,而且也具有良好的水平扩展能力,是专门为分布式环境设计的 ...
- vc++引用外部dll时报error LNK2019: 无法解析的外部符号
初学cpp,因为之前装linux下各种软件的时候,知道LD_LIBRARY_PATH可以指定动态库的目录.今天在vc集成log4cpp的时候,编译main时报error LNK2019: 无法解析的外 ...
- 20145317彭垚 MSF基础应用
20145317彭垚 MSF基础应用 基础问题回答 用自己的话解释什么是exploit,payload,encode? exploit就相当于是载具,将真正要负责攻击的代码传送到靶机中,我觉得老师上课 ...
- 20145335郝昊《网络攻防》Exp 4 利用nmap扫描
20145335郝昊<网络攻防>Exp 4 利用nmap扫描 实验原理 使用msf辅助模块,nmap来扫描发现局域网中的主机ip 实验步骤 首先使用命令创建一个msf所需的数据库 serv ...
- Python3基础 file read 读取txt文件的前几个字符
Python : 3.7.0 OS : Ubuntu 18.04.1 LTS IDE : PyCharm 2018.2.4 Conda ...