美文网首页
idea+testng的入门使用

idea+testng的入门使用

作者: 陈芝麻烂谷子的事 | 来源:发表于2022-05-06 14:33 被阅读0次

java+testng实现接口测试框架

1.新建maven项目:

(1)打开idea,new project,新建一个maven项目
(2)搜索maven中央仓库 - https://mvnrepository.com/,进入后搜索testng

image.png
(3)复制如下内容,放入pom.xml文件中
<dependency>
  <groupId>org.testng</groupId>
  <artifactId>testng</artifactId>
  <version>7.5</version>
</dependency>
image.png

完成以上步骤,testng就完成引入了。

2.安装testng.xml :

(1)下载插件:https://plugins.jetbrains.com/plugin/9556-create-testng-xml
(2)通过idea 中找到下载的这个插件,进行安装

image.png
(3)重启idea,右击这个文件就可以看到 create testng xml了
image.png

3.编写第一个测试用例:

(1)在src/main/java下新建文件 com.Casemeu.testcase,在testcase新建.javaClass文件testcase1


image.png

(2)如下代码使用 @test注解,代表这是一个可执行的测试用例,并使用Assert进行断言


image.png
(3)执行测试用例,点击运行按钮即可,执行结果如下:
image.png

4.使用xml批量执行用例:

(1)右击任意一个文件点击create testng xml,然后重启idea,即可生成testng.xml文件,右击执行run testng.xml 可批量执行所有的用例:


image.png

5.@Test常用参数

(1) enable 是否执行此用例,若enable = false,则不执行此方法,若enable = true 则此方法执行,如图test1的enable设置为false,则只执行了test2,test3用例:

image.png
(2)expectedException预期异常,提前预期用例会返回的异常,使得测试用例通过后,不会抛出此异常。
例如:使用1除以0 除数为0 则会抛出java.lang.ArithmeticException: / by zero的异常如图所示
image.png
但是此时用例的断言是通过的,所以我们不需要获取此类异常。此时我们增加参数expectedException = ArithmeticException.class,再次运行代码:
image.png
最终,测试用例执行通过,此异常不会被抛出导致用例失败。
当然,预期异常也可以设置多个,例如:
@Test(expectedExceptions = {ArithmeticException.class, ArithmeticException2.class,... })
(3)timeout 超时时间设置,timeout =2 即超时时长2ms,如图所示若用例执行超过2ms则会报错超时。
image.png
(4)goups 用例分组,testng可以通过分组的方式运行测试用例,将同组的用例放在一起运行。
编写如下代码,使用groups = "分组名"来定义分组
image.png
然后通过testng.xml文件配置分组信息执行: image.png
注意:此时就不需要写 具体的用例名称了,他会根据分组去运行。
一个用例也可以同时有多个分组,可以使用```groups = {"groups2","groups2"}
同时testng.xml中需要修改为:
        <groups>
            <run>
                <include name="groups2"/>
                <include name="groups1"/>
            </run>
        </groups>
一个定义分组后,各个用例引用这个分组的例子:
首先新建一个文件用于定义分组
文件名:groups
public class groups {
    public static final String BVT = "BVT";
    public static final String NORMAL = "NORMAL";
    public static final String ABNORMAL = "NORMAL";
}
然后使用测试用例引用这个分组进行分组分类
文件名:testcase1
import static com.Casemeu.common.groups.*;
public class tastcase1{
    @Test(groups = BVT)
    public void test1() {
        Assert.assertEquals("hello", "hello");
    }
这样是实现了规范的分组管理。

(5)dependsOnMethods依赖方法,加入此参数表示测试用例执行前均需要执行依赖的方法,依赖的方法执行失败用例也会失败
dependsOnMethods = {"test2","test1"}
实际应用如下:

image.png
(6)Parameters使用xml进行参数化:
首先配置代码中参数化内容
    @Test(groups = BVT)
    @Parameters({"p1","p2"})
    public void test2(String p1,String p2) {
        System.out.printf("第一个参数为:"+p1+"第二个参数为:"+p2);
        Assert.assertEquals(namea, "你好", "名称相同");
    }

然后配置xml中参数,放入test标签下一级:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="All Test Suite">
    <test verbose="2" preserve-order="true" name="D:/interfaceCreation/src/main/java">
        <parameter name="p1" value="参数化参数第一个"></parameter>
        <parameter name="p2" value="参数化参数第二个"></parameter>
        <groups>
            <run>
                <include name= "BVT"/>
            </run>
        </groups>
        <classes>
            <class name="com.Casemeu.testcase.tastcase1">
            </class>
        </classes>
    </test>
</suite>

接着执行这个xml就可以了,如图已经把两个参数都传入用例中了:


image.png

(7)@DataProvider 传递较复杂的参数,进行参数化:
首先新建一个传递参数的方法

@DataProvider(name = "account')
public Object[][] account(){
          return new Obhect[][]{
                    {"zhang","12345"},
                    {"chen","11111"}
       };
}

然后,在测试用例中使用这个参数:

    @Test(groups = BVT,dataProvider = "account")
    public void test21(String at,String pw) {
        System.out.printf("账号为:"+at+",密码为:"+pw);
        Assert.assertEquals("你好", "你好", "名称相同");
    }

然后运行这个用例,可以看到这两个参数都传入到用例中:


6.测试报告的生成:

(1)idea中找到run - Edit Configurations - (右边框中)listeners - use default reproters(勾选)


image.png image.png

(2)这个时候运行代码就可以看到测试报告的文件


image.png

(3) index.html 汇总的测试报告 /emailable-report.html 详细的测试报告


image.png

7.功能小计

测试注释 @Test
套件测试 标签
在套件中的所有测试运行之前运行 @BeforeSuite
在套件中的所有测试运行之后运行 @AfterSuite
测试之前运行 @BeforeTest
测试之后运行 @AfterTest
分组测试 @Test的group参数
在调用属于任何这些组的第一个测试方法之前运行 @BeforeGroups
在调用属于任何这些组的第一个测试方法之后运行 @AfterGroups
在调用当前类的第一个测试方法之前运行 @BeforeClass
在调用当前类的第一个测试方法之后运行 @AfterClass
在每个测试方法之前运行 @BeforeMethod
在每个测试方法之后运行 @AfterMethod
预期的异常 @Test(expectedExceptions = ArithmeticException.class)
超时测试 @Test(timeout=1000)
参数化测试 @Parameters或DataProvider
依赖测试 @Test的dependsOnMethods参数

8.接口测试中用到的其他包(此处待持续更新):

(1)首先我们引入fastjson的包,在pom.xml中

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.24</version>
        </dependency>

(2)数据库链接

      <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.21</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
            <version>1.5.1.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>com.github.yongchristophertang</groupId>
            <artifactId>rest-connector</artifactId>
            <version>0.5.17</version>
        </dependency>

相关文章

网友评论

      本文标题:idea+testng的入门使用

      本文链接:https://www.haomeiwen.com/subject/nariertx.html