使用java+TestNG进行接口回归测试

来源:宜信技术学院 作者:王海燕

TestNG是一个开源自动化测试框架,TestNG表示下一代(Next Generation的首字母)。 TestNG类似于JUnit(特别是JUnit 4),但它不是JUnit框架的扩展,相较于Junit而言,功能更强大,使用起来更加方便,比较适合测试人员来进行集成测试或是接口回归测试。

TestNG有以下几大特点:

使用java和面向对象的功能

方法的名称就不必受限于某种固定的格式,可以通过注释来识别需要执行的方法;

方法中需要的一些参数可以通过注释传递;

注释是强类型的,所以有错误可以在编译期体现出来;

支持分组测试,依赖测试,并行测试,负载测试等

支持多线程测试

TestNG常用的注释类型

注释

描述

@Test

将类或是方法标记为测试的一部分

@BeforeSuite

在该套件的所有测试都运行在注释的方法之前,仅运行一次。

@AfterSuite

在该套件的所有测试都运行在注释的方法之后,仅运行一次

@BeforeClass

在调用当前类的所有测试方法之前执行,注释方法仅运行一次

@AfterClass

在调用当前类的所有测试方法之后执行,注释方法仅运行一次

@BeforeTest

注释的方法将在属于<test>标签内的类的所有测试方法运行之前运行

@AfterTest

注释的方法将在属于<test>标签内的类的所有测试方法运行之后运行。

@BeforeGroups

此方法是保证在运行属于任何这些组的第一个测试方法之前,该方法被调用

@AfterGroups

此方法是保证运行属于任何这些组的所有测试方法执行之后,该方法被调用

@BeforeMethod

被注释的方法将在每个测试方法之前执行

@AfterMethod

被注释的方法将在每个测试方法之后执行

@DataProvider

被注释的方法的作用是提供测试数据,如果某个测试方法希望从这个DataProvider接收数据,就必须使用一个名字等于这个注解名字的DataProvider

@Parameters

介绍如何将参数传递给测试方法

TestNG参数化测试

TestNG提供了2种传递参数的方式。

第一种: testng.xml 这种方式的优点是使得代码和测试数据分离,方便维护;缺点就是如果需要传递的参数不是基本的java类型,或是需要的值只能在运行时创建,这种方法就不再适用。

第二种:@DataProvider 这种能够提供比较复杂的参数(也叫data-driven testing)。

我们项目中使用的是第二种

如图示:首先给测试方法添加值为WithdrawBatchQueryLoopData的属性dataProvider,然后提供一个name与之对应的@DataProvider方法,这个方法里的具体实现,就是从配置文件或是数据库中读取数据。

TestNG分组测试

分组测试是TestNG中的创新功能,分组测试使得我们可以进行各种灵活的测试,在想要并行多组不同的测试时,不需要重新进行编译。

分组可以应用在方法上(一个方法可以属于一到多个分组),也可以应用在类上,应用在类上时,这个类中的所有public方法都变成测试方法,即便他们没有被注解,也可以继续在需要增加属性的方法上重复@Test注解。分组执行测试方法有多种形式:

可以通过在testng.xml配置,来指定具体要执行的分组

也可以通过集成到jenkins中,通过参数化构建来设置要执行的分组

还可以通过运行Run Configurations时,设置要执行的分组

需要注意的一点:Group标签会导致@BeforeMethod失效

@BeforeMethod的作用是标明所注解的方法在每一个测试方法运行之前会执行一次。例如:

@BeforeMethod
Public void beforeMehod()
@Test
Public void testCase1()
@Test
Public void testCase2()

正常的执行的顺序为:beforeMehod—> testCase1—> beforeMehod—> testCase2

但是,在将testCase放入某一个Group之后,@BeforeMethod就失效了

@BeforeMethod
Public void beforeMehod()
@Test(groups = "group1" )
Public void testCase1()
@Test(groups = "group1" )
Public void testCase2()

再次执行脚本,执行顺序变为testCase1—>testCase2

解决方法:

1、将@BeforeMethod同样加入group1

2、设置@BeforeMethod的属性alwaysRun=true

TestNG依赖测试

我们经常会遇到要测试的多个接口之间存在依赖关系,即某一个接口的执行需要依赖上一个接口的返回结果,比如执行批付查询时,需要先执行批量代付,那么这时就使用到了TestNG的依赖测试,TestNG使用dependsOnMethods配合alwaysRun来设置测试方法之间的依赖关系,使用dependsOnGroups来设置分组之间的依赖关系

  • 强依赖:在测试方法运行之前,所有的依赖方法都必须运行并且成功,哪怕只有一个失败,测试方法都不会被调用(是skip而不是fail)

  • 软依赖(alwaysRun=true):测试方法在依赖方法运行之后总是会被执行,即便某些依赖方法运行失败。

TestNG预期异常测试

测试中,有时候我们期望某些代码抛出异常。

TestNG通过@Test(expectedExceptions) 来判断期待的异常, 并且判断Error Message

TestNG测试报告

执行完测试用例之后,会在项目的test-output(默认目录)下生成测试报告

打开index.html文件可以看到测试结果摘要,包括:套件名、测试用例成功数、测试用例失败数、测试用例忽略数、执行时间和testng.xml文件。

测试用例都成功的话,测试结果以绿底标志,测试用例有失败的话,测试结果以红底标志。testNG自带生成的测试报告不太美观,可以使用testng-xslt进行美化。


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我知道了。下面是搭建接口自动化测试框架的步骤: 1. 安装 Eclipse 首先,你需要安装 Eclipse,可以在官网上下载最新版本的 Eclipse IDE。 2. 安装 TestNG 插件 打开 Eclipse 后,进入 Help -> Eclipse Marketplace,在搜索框中输入 TestNG,然后点击 Install 安装 TestNG 插件。 3. 创建 Maven 项目 在 Eclipse 中创建一个 Maven 项目,选择 Create a simple project,然后勾选 Create a simple project (skip archetype selection),接下来输入项目名称和项目路径,最后点击 Finish。 4. 配置 pom.xml 文件 在项目中的 pom.xml 文件中添加以下依赖: ``` <dependencies> <dependency> <groupId>org.testng</groupId> <artifactId>testng</artifactId> <version>7.4.0</version> <scope>test</scope> </dependency> <dependency> <groupId>io.rest-assured</groupId> <artifactId>rest-assured</artifactId> <version>4.4.0</version> </dependency> </dependencies> ``` 这里我们使用TestNG 和 Rest Assured 两个依赖。 5. 创建测试类 在 src/test/java 目录下创建一个测试类,例如 TestDemo。在测试类中编写测试方法,例如: ``` import org.testng.annotations.Test; import io.restassured.RestAssured; import static io.restassured.RestAssured.*; public class TestDemo { @Test public void testDemo() { RestAssured.baseURI = "https://jsonplaceholder.typicode.com"; given().log().all() .when().get("/posts/1") .then().log().all().statusCode(200); } } ``` 这里的测试方法使用了 Rest Assured 库来发送 HTTP 请求,并使用 TestNG 的断言来验证响应状态码是否为 200。 6. 运行测试 在 Eclipse 中右键点击测试类或测试方法,选择 Run As -> TestNG Test 来运行测试。 这就是使用 Eclipse 和 TestNG 搭建接口自动化测试框架的步骤。希望能对你有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值