IDEA,Java + Maven + TestNG编写接口自动

2022-05-16  本文已影响0人  涅槃Ls

写作背景:有点Java基础的功能测试人员(点点点工程师),所在项目有"去QE"的趋势,所以自己要多点亮其他技能,让路子走宽点。
简单说一下去QE:项目测试不再有专职的测试工程师来做,而是由开发工程师自己来进行。遵循“谁开发、谁测试、谁上线、谁On call”的原则。

一、Java、TestNG、JSONAssert都是什么

1.1、Java基础教程

我先复习Java的基本简介、语法、写法、使用。参考资料

1.2、TestNG

1.3、TestNG支持的注释列表:

注解 描述
            @BeforeSuite              在该套件的所有测试都运行在注释的方法之前,仅运行一次。
@AfterSuite 在该套件的所有测试都运行在注释方法之后,仅运行一次。
@BeforeClass 在调用当前类的第一个测试方法之前运行,注释方法仅运行一次。
@AfterClass 在调用当前类的第一个测试方法之后运行,注释方法仅运行一次
@BeforeTest 注释的方法将在属于<test>标签内的类的所有测试方法运行之前运行。
@AfterTest 注释的方法将在属于<test>标签内的类的所有测试方法运行之后运行。
@BeforeGroups 配置方法将在之前运行组列表。 此方法保证在调用属于这些组中的任何一个的第一个测试方法之前不久运行。
@AfterGroups 此配置方法将在之后运行组列表。该方法保证在调用属于任何这些组的最后一个测试方法之后不久运行。
@BeforeMethod 注释方法将在每个测试方法之前运行。
@AfterMethod 注释方法将在每个测试方法之后运行。
@DataProvider 标记一种方法来提供测试方法的数据。注释方法必须返回一个Object [] [],其中每个Object []可以被分配给测试方法的参数列表。 要从该DataProvider接收数据的@Test方法需要使用与此注释名称相等的dataProvider名称。
@Factory 将一个方法标记为工厂,返回TestNG将被用作测试类的对象。 该方法必须返回Object []
@Listeners 定义测试类上的监听器。
@Parameters 描述如何将参数传递给 @Test 方法。
@Test 将类或方法标记为测试的一部分。

1.4、JSONAssert

    /**
     * Asserts that the JSONObject provided matches the expected string.  If it isn't it throws an
     * {@link AssertionError}.
     *
     * @param expectedStr Expected JSON string
     * @param actual JSONObject to compare
     * @param strict Enables strict checking
     * @throws JSONException JSON parsing error
     */
    public static void assertEquals(String expectedStr, JSONObject actual, boolean strict)
            throws JSONException {
        assertEquals(expectedStr, actual, strict ? JSONCompareMode.STRICT : JSONCompareMode.LENIENT);
    }

二、搭建框架(创建maven项目,配置testng依赖)

2.1、创建普通maven项目即可
2.2、在pom.xml中配置依赖
    <dependencies>
        <dependency>
            <groupId>org.testng</groupId>
            <artifactId>testng</artifactId>
            <version>${testng.version}</version>
        </dependency>
    </dependencies>
2.3、下载依赖(pom文件重新加载项目)

三、创建Demo测试类和方法

直接复制官网中的simple:


package com.demo.apitest.testcase;

import org.testng.annotations.*;

public class DemoTest {

    @BeforeClass
    public void setUp() {
        // code that will be invoked when this test is instantiated
    }

    @Test(groups = {"fast"})
    public void aFastTest() {
        System.out.println("Fast test");
    }

    @Test(groups = {"slow"})
    public void aSlowTest() {
        System.out.println("Slow test");
    }
}

四、两种方式运行(直接运行、xml方式运行)

4.1、直接运行

直接运行

4.2、xml方式运行

IDEA创建的项目默认不会生成testng.xml(用于控制测试执行的执行)文件,就需要在根目录手动创建该文件,同时需要在pom.xml文件中关联设置testng.xml。testng.xml写法参考官网: 官网中testng.xml

基本格式如下:

新建testng.xml pom文件中关联testng.xml
xml方式运行

五、实际应用中的常见用例写法

常见项目结构

├── src
│    ├── main
│    │    ├── java
│    │    │     └── com.demo.apitest           # 框架公共服务模块
│    │    │             └── annotations              # 注释
│    │    │             └── api                      # 后端接口定义
│    │    │             └── enums                    # 枚举
│    │    │             └── model                    # Model
│    │    │             └── service                  # 公共方法
│    │    │             └── utils                    # 公共工具方法
│    │    └── resources                              
│    │          ├── driver                           # selenium的chrome驱动,用于本地登陆获取cookie
│    │          └── application.yml                  # 配置文件
│    └── test
│         ├── java
│         │     ├── com.demo.apitest           # 框架公共服务模块
│         │     │      └── testcase                  # 接口测试脚本
│         │     └── MyBaseTestNg.java                # testng基础测试类,所有测试脚本的父类
│         └── resources                              
│               └── testdata                         # 接口测试数据
└── testng.xml                                 # testng测试套件配置

延伸下,在src.main.resources 目录下可创建一个 application .yml文件,用于配置公共参数,普通类型参数可使用 @value注解获取,list类型参数可使用@ConfigurationProperties注解获取

\color{red}{//TODOLIST 待补充}

六、扩展:TestNG的常见测试场景

上一篇 下一篇

猜你喜欢

热点阅读