目录
接口概念
HTTP接口
TestNG介绍
TestNG注解
dependsOnMethods使用
alwaysRun使用
alwaysRun = false
alwaysRun = true
description使用
enabled使用
enabled=true
enabled = false
接口概念
1. 接口并不是java语言中的 Interface.
2. 接口是服务, 用代码实现的一段业务逻辑, 例如,登录接口, 注册接口。
3. 服务可以是任意协议(http, ducco, webservice ), 任意语言的(Java, Python, PHP).
4. 接口测试只需要指定对应协议, 无须关心后台的实现语言。
HTTP接口
http接口分为客户端和服务段,客户端发送请求,服务端响应请求。
URL: http://IP: PORT/xx/xx/login
请求方法: POST, GET, DELETE, PUT, PATCH
参数: mobilephone=13212312312 & pwd= 123123123
1. 接口并不是java语言中的 Interface.
2. 接口是服务, 用代码实现的一段业务逻辑, 例如,登录接口, 注册接口。
3. 服务可以是任意协议(http, ducco, webservice ), 任意语言的(Java, Python, PHP).
4. 接口测试只需要指定对应协议, 无须关心后台的实现语言。
http接口分为客户端和服务段,客户端发送请求,服务端响应请求。
URL: http://IP: PORT/xx/xx/login
请求方法: POST, GET, DELETE, PUT, PATCH
参数: mobilephone=13212312312 & pwd= 123123123
TestNG介绍
TestNG是一个测试框架, 旨在简化从单元测试到集成测试的广泛测试需求。 它提供了一系列丰富的注解(标签), 来帮助我们很方便的编写和管理测试用例和测试方法。
TestNG是一个测试框架, 旨在简化从单元测试到集成测试的广泛测试需求。 它提供了一系列丰富的注解(标签), 来帮助我们很方便的编写和管理测试用例和测试方法。
IDEA安装TestNG插件
test NG依赖
org.testng testng6.11
TestNG注解
Test注解
使用此方法注解的类将被TestNG所识别并运行。
属性:
dependsOnMethods: 依赖的方法
alwaysRun: 设置为True时, 无论什么时候都会运行。
description: 说明
enabled: 设置为false时失效
dataProvider: 数据提供者的名称
dependsOnMethods使用
Test注解
使用此方法注解的类将被TestNG所识别并运行。
属性:
dependsOnMethods: 依赖的方法
alwaysRun: 设置为True时, 无论什么时候都会运行。
description: 说明
enabled: 设置为false时失效
dataProvider: 数据提供者的名称
Test注解可以被TestNG识别, 此处,test2的依赖前提是test1, 执行test2之前会执行test1.
@Test
public void test1(){
System.out.println("test1......");
}
@Test(dependsOnMethods = "test1")
public void test2(){
System.out.println("test2......");
}
alwaysRun使用
1. test2方法的pre-condition(预先)执行条件是执行test1, dependsOnMethods = "test1"。
2. alwaysRun关键字, 设置为false时, 如果pre-condition的值失败,则影响当前方法执行。若pre-condtion的结果为成功时, 则当前方法能顺利通过。
1. test2方法的pre-condition(预先)执行条件是执行test1, dependsOnMethods = "test1"。
2. alwaysRun关键字, 设置为false时, 如果pre-condition的值失败,则影响当前方法执行。若pre-condtion的结果为成功时, 则当前方法能顺利通过。
alwaysRun = false
跑test2方法
@Test
public void test1(){
System.out.println("test1......");
assertEquals(true, false);//test会报错
}
@Test (dependsOnMethods = "test1", alwaysRun = false) //先执行test1这个case, alwaysRun=true时候,不管test1成功或者失败都会跑结果
public void test2(){
System.out.println("test2......");
}
结果 : test1断言错误之后, test2不在继续执行
alwaysRun = true
跑test2测试方法
@Test
public void test1(){
System.out.println("test1......");
assertEquals(true, false);//test会报错
}
@Test (dependsOnMethods = "test1", alwaysRun = true) //先执行test1这个case, alwaysRun=true时候,不管test1成功或者失败都会跑结果
public void test2(){
System.out.println("test2......");
}
结果 : test1断言错误之后, test2也继续执行
description使用
description更像一个说明,对于当前方法业务的描述,或者说在做什么。不会有什么显示结果和影响。在结合测试报告的时候,会显示。
@Test (dependsOnMethods = "test1", alwaysRun = true, description = "this is test2")
enabled使用
1. enabled=false时候,测试用例失效。
2. enabled=true时候,测试用例生效,默认也可以不写enabled.
enabled=true
@Test(enabled = true)
public void test3(){
System.out.println("test3......");
}
description更像一个说明,对于当前方法业务的描述,或者说在做什么。不会有什么显示结果和影响。在结合测试报告的时候,会显示。
1. enabled=false时候,测试用例失效。
2. enabled=true时候,测试用例生效,默认也可以不写enabled.
enabled=true
@Test(enabled = true)
public void test3(){
System.out.println("test3......");
}
结果: 执行成功,enabled = true和默认不写的效果是一致。
enabled = false
@Test(enabled = false)
public void test3(){
System.out.println("test3......");
}
结果: 没有case执行,本测试用例失效。
TestNG.xmlBefore/After注解描述: 用来管理测试用例, 运行testNG。
suite: 套件, 项目, 最大。
test: 模块。
classes, class: 测试类。
| 注解 | 描述 |
| @BeforeSuite | 带此注释的方法将在该套件中所有测试运行之前运行 |
| @AfterSuite | 带此注释的方法将在该套件中所有测试运行之后运行 |
| @BeforeTest | 带此注解的方法将在任何测试方法运行之前运行 |
| @AfterTest | 带此注解的方法将在任何测试方法运行之后运行 |
| @BeforeClass | 在当前类中第一个测试方法之前运行 |
| @AfterClass | 在当前类中所有测试方法之后运行 |
| @BeforeMethod | 在每个测试方法之前运行 |
| @AfterMethod | 在每个测试方法之后运行 |
package com.testng;
import org.testng.annotations.*;
import static org.testng.Assert.*;
public class Demo {
@BeforeSuite
public void f1(){
System.out.println("@BeforeSuite......");
}
@AfterSuite
public void f2(){
System.out.println("@BeforeSuite......");
}
@BeforeTest
public void f3(){
System.out.println("@BeforeTest......");
}
@AfterTest
public void f4(){
System.out.println("@AfterTest......");
}
@BeforeClass
public void f5(){
System.out.println("@BeforeClass......");
}
@AfterClass
public void f6(){
System.out.println("@AfterClass......");
}
@BeforeMethod
public void f7(){
System.out.println("@BeforeMethod......");
}
@AfterMethod
public void f8(){
System.out.println("@AfterMethod......");
}
@Test
public void test1(){
System.out.println("Demo test1......");
assertEquals(true, true);//test会报错
}
@Test (dependsOnMethods = "test1", alwaysRun = true, description = "this is test2")
//先执行test1这个case, alwaysRun=true时候,不管test1成功或者失败都会跑结果
public void test2(){
System.out.println("Demo test2......");
}
@Test(enabled = true)
public void test3(){
System.out.println("Demo test3......");
}
}
DEMO2类
package com.testng;
import org.testng.annotations.Test;
import static org.testng.Assert.assertEquals;
public class Demo2 {
@Test
public void test1(){
System.out.println("Demo2 test1......");
assertEquals(true, true);//test会报错
}
@Test (dependsOnMethods = "test1", alwaysRun = true, description = "this is test2")
//先执行test1这个case, alwaysRun=true时候,不管test1成功或者失败都会跑结果
public void test2(){
System.out.println("Demo2 test2......");
}
@Test(enabled = true)
public void test3(){
System.out.println("Demo2 test3......");
}
}
TestNG xml
执行结果



