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 ...
随机推荐
- 74. Search a 2D Matrix(二分查找,剑指offer 1)
Write an efficient algorithm that searches for a value in an m x n matrix. This matrix has the follo ...
- xhtml 的三种 doctype
{1}文档宣告 <!ODCTYPE html PUBLIC"-//W3C//DTD XHTML 1.0 [there]//EN" "http://www.w4org/TR/xhtml1/DTD/ ...
- ajax提交form(文本数据以及文件上传)
$.ajax({ url: 'xxxx.do', type: 'POST', cache: false, data: new FormData($('.layui-form')[0]), proces ...
- 持续集成之三:搭建Maven私服Nexus
安装环境 Red Hat Enterprise Linux Server release 7.3 (Maipo) jdk1.7.0_80 apache-tomcat-7.0.90 mysql-5.7. ...
- 最新版Intellij IDEA插件JRebel 7.0.7官方免费激活
本文转自:http://blog.csdn.net/u012283609/article/details/70213307 开场语 有时候真实比小说更加荒诞,因为虚构是在一定逻辑下进行的,而现实往往毫 ...
- Mysql 更改编码方式
Mysql 更改编码方式 --查看编码方式 show variables like 'char%'; --设置编码方式 set character_set_server=utf8;
- 常用maven命令总结
常用Maven命令: mvn -v //查看版本 mvn archetype:create //创建 Maven 项目 mvn compile //编译源代码 mvn test-compile //编 ...
- 【资源】分享一个最新版sublime 3143的注册码,亲测可用
注:请勿用作商业用途,有能力者请购买正版!!! —– BEGIN LICENSE —– TwitterInc 200 User License EA7E-890007 1D77F72E 390CDD9 ...
- shell脚本中如何使scp不输入密码即可传输文件
答:使用ssh密钥对 示例如下: 如果A机想要获取B机上的文件,那么需要将在A机上生成的公钥放置到B机上的指定位置~/.ssh/authorized_keys 问题一: 如何在A机上生成ssh密钥对? ...
- sqlserver数据库出错的解决方法
1.SQLServer2008数据库sa账户登录127.0.0.1失败 http://blog.sina.com.cn/s/blog_546a30270102weh2.html 2.SqlServer ...