最近看了点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的更多相关文章

  1. selenium第一课(selenium+java+testNG+maven)

    selenium介绍和环境搭建 一.简单介绍 1.selenium:Selenium是一个用于Web应用程序测试的工具.Selenium测试直接运行在浏览器中,就像真正的用户在操作一样.支持的浏览器包 ...

  2. Selenium+TestNG+Maven(2)

    转载自http://www.cnblogs.com/hustar0102/p/5885115.html selenium介绍和环境搭建 一.简单介绍 1.selenium:Selenium是一个用于W ...

  3. MyEclipse TestNG插件安装与配置

    MyEclipse TestNG插件安装与配置   by:授客 QQ:1033553122 测试环境 jdk1.8.0_121 myeclipse-10.0-offline-installer-win ...

  4. Selenium (3) —— Selenium IDE + Firefox录制登录脚本(101 Tutorial)

    Selenium (3) -- Selenium IDE + Firefox录制登录脚本(101 Tutorial) selenium IDE版本: 2.9.1 firefox版本: 39.0.3 参 ...

  5. testng testcase失败重试

    简单介绍 需求场景:测试移动端应用,常会因为点击失效.网络延迟大等原因导致测试脚本失败.这时,需要自动重新运行失败的脚本,直到脚本成功通过或者到达限定重试次数. 解决方案:实现testng的IRetr ...

  6. TestNg学习一

    简介 TestNG是Java中的一个测试框架, 类似于JUnit 和NUnit,   功能都差不多, 只是功能更加强大,使用也更方便 Java中已经有一个JUnit的测试框架了.  TestNG比JU ...

  7. testNG xml文件详解

    网上看到一篇整理的非常详细的xml文件详解,分享一下: 1 <?xml version="1.0" encoding="UTF-8"?> 2 < ...

  8. java 测试框架 TestNG

    Java中print.printf.println的区别 printf主要是继承了C语言的printf的一些特性,可以进行格式化输出 print就是一般的标准输出,但是不换行 println和prin ...

  9. selenium+java+testNG+maven环境搭建

    一.简单介绍 1.selenium: Selenium是一个用于Web应用程序测试的工具.Selenium测试直接运行在浏览器中,就像真正的用户在操作一样.支持的浏览器包括IE.Mozilla Fir ...

随机推荐

  1. js自执行函数的常见写法

    js自执行函数的常见写法 2016-12-20 20:02:26 1.关于自执行函数 1.1 写自执行函数的好处:独立的作用域,不会污染全局环境 (function() { })(); 1.2 理解重 ...

  2. SQL: 左连接,右连接,内连接,左外连接,右外连接,完全连接

    例子: ---------------------- --------------------------- a表 id name b表 id job parent_id 1 张三           ...

  3. C/C++之extern "C"的用法解析

    extern "C"的用法解析 http://blog.sina.com.cn/u/494a1ebc010004g5 C++中extern “C”含义深层探索 1.引言 C++语言 ...

  4. Python Web学习笔记之CPU时间片

    时间片即CPU分配给各个程序的时间,每个线程被分配一个时间段,称作它的时间片,即该进程允许运行的时间,使各个程序从表面上看是同时进行的.如果在时 间片结束时进程还在运行,则CPU将被剥夺并分配给另一个 ...

  5. go环境搭建—基于CentOS6.8

    1. 背景 在当前的中国网络环境下,我们无法访问Google的服务的,包括Golang.org.从第三方网站下载预编译的二进制Go发行版可能存在第三方源代码注入的风险,例如之前的XcodeGhost. ...

  6. 串口WIF简单I调试

    串口WIF简单I调试 /*********************************************************************** Title:Wifi串口调试 H ...

  7. Memcached深入分析及内存调优

    到这里memcached的初步使用我们已经没问题了,但是了解一些它内部的机制还是十分必要的,这直接涉及到你能否把memcached给真正“用好”. Memcached的守护进程机制使用的是Unix下的 ...

  8. Python3基础 str lstrip 去掉字符串左边的空格

             Python : 3.7.0          OS : Ubuntu 18.04.1 LTS         IDE : PyCharm 2018.2.4       Conda ...

  9. Java8中数据流的使用

    Code: @Data @ToString @NoArgsConstructor @AllArgsConstructor public class Employee { private Integer ...

  10. 论文笔记——ThiNet: A Filter Level Pruning Method for Deep Neural Network Compreesion

    论文地址:https://arxiv.org/abs/1707.06342 主要思想 选择一个channel的子集,然后让通过样本以后得到的误差最小(最小二乘),将裁剪问题转换成了优化问题. 这篇论文 ...