栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

接口自动化集成TestNG框架

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

接口自动化集成TestNG框架

目录

接口概念

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

 

TestNG介绍

TestNG是一个测试框架, 旨在简化从单元测试到集成测试的广泛测试需求。 它提供了一系列丰富的注解(标签), 来帮助我们很方便的编写和管理测试用例和测试方法。 

IDEA安装TestNG插件

test NG依赖

    
        org.testng
        testng
        6.11
    

TestNG注解 

Test注解

使用此方法注解的类将被TestNG所识别并运行。

属性: 

dependsOnMethods: 依赖的方法

alwaysRun: 设置为True时, 无论什么时候都会运行。

description: 说明

enabled: 设置为false时失效

dataProvider: 数据提供者的名称

dependsOnMethods使用

 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的结果为成功时, 则当前方法能顺利通过。

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......");
    }

结果: 执行成功,enabled = true和默认不写的效果是一致。 

enabled = false
@Test(enabled = false)
    public void test3(){
        System.out.println("test3......");
    }

结果: 没有case执行,本测试用例失效。

TestNG.xml 

描述: 用来管理测试用例, 运行testNG。

suite: 套件, 项目, 最大。

test: 模块。

classes, class: 测试类。

Before/After注解 
注解描述
@BeforeSuite带此注释的方法将在该套件中所有测试运行之前运行
@AfterSuite带此注释的方法将在该套件中所有测试运行之后运行
@BeforeTest带此注解的方法将在任何测试方法运行之前运行
@AfterTest带此注解的方法将在任何测试方法运行之后运行
@BeforeClass在当前类中第一个测试方法之前运行
@AfterClass在当前类中所有测试方法之后运行
@BeforeMethod在每个测试方法之前运行
@AfterMethod在每个测试方法之后运行
DEMO类

 

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



    
        
            
            
        
    
执行结果

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/941005.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号