TestNg+Allure框架搭建

一、本地Allure安装

1、Allure安装包下载

百度网盘链接: https://pan.baidu.com/s/1sYWTYSbz5ahT5-MCwELpRA 提取码: 6ywd
下载后放置安装路径解压即可,例:D:\Program Files\allure-2.7.0

2、Allure环境变量配置

环境变量Path增加allure安装路径\allure-2.7.0\bin,例:D:\Program Files\allure-2.7.0\bin;

3、验证Allure是否安装成功

cmd命令输入 allure --version,显示版本信息则安装成功

二、增加TestNg.xml

在对应模块与pom文件同目录下增加TestNg.xml文件,如下所示:

TestNg.xml内容如下,若有新增其他测试类需在classes节点下增加对应的class路径文件:

<?xml version="1.0" encoding="UTF-8"?>
<suite name="Suite" parallel="false">
    <test name="Test">
        <classes>
            <class name="demo.testng.MethodTest"/>
        </classes>
    </test> <!-- Test -->
</suite> <!-- Suite -->

三、配置pom.xml

1、节点下增加以下内容:

<properties>
    <java.version>1.8</java.version>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
    <!--TestNg Aullre Report使用-->
    <aspectj.version>1.9.2</aspectj.version> <!--AspectJ是一个基于Java语言的AOP框架-->
    <allure.version>2.13.0</allure.version>
    <xmlFileName>TestNg.xml</xmlFileName>
</properties>

2、节点下增加以下内容:

<!--TestNg-->
<dependency>
    <groupId>org.testng</groupId>
    <artifactId>testng</artifactId>
    <version>6.14.3</version>
</dependency>
<!--Allure报告依赖包-->
<dependency>
    <groupId>io.qameta.allure</groupId>
    <artifactId>allure-testng</artifactId>
    <version>${allure.version}</version>
    <scope>test</scope>
</dependency>
<!--Allure报告生成插件依赖包-->
<dependency>
    <groupId>org.aspectj</groupId>
    <artifactId>aspectjweaver</artifactId>
    <version>${aspectj.version}</version>
</dependency>

3、节点下增加build插件内容:

<build>
    <finalName>${project.name}</finalName>
    <plugins>
        <!--Allure报告构建生成-->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.22.1</version>
            <configuration>
                <argLine>
                    -javaagent:"${settings.localRepository}/org/aspectj/aspectjweaver/${aspectj.version}/aspectjweaver-${aspectj.version}.jar"
                </argLine>
                <!--生成allure-result的目录-->
                <systemProperties>
                    <!--是否忽略html,解释见下图。与之后在reportNg报告上显示截图相关。当前已经使用allure了,这里可以直接去掉啦-->
                    <!--<org.uncommons.reportng.escape-output>false</org.uncommons.reportng.escape-output>-->
                    <!--定义输出在项目 target 目录-->
                    <property>
                        <name>allure.results.directory</name>
                        <value>target/allure-results</value>
                    </property>
                </systemProperties>
                <!--测试失败后,是否忽略并继续测试-->
                <testFailureIgnore>true</testFailureIgnore>
                <argLine>
                    -Dfile.encoding=UTF-8
                </argLine>
                <suiteXmlFiles>
                    <!--该文件位于工程根目录时,直接填写名字,其它位置要加上路径-->
                    <suiteXmlFile>${xmlFileName}</suiteXmlFile>
                </suiteXmlFiles>
            </configuration>
        </plugin>
    </plugins>
</build>

四、TestNg测试用例编写

应用场景:对获取身份证年龄方法进行测试
增加测试类如下:

public class MethodTest {
    /**
     * 测试场景:根据身份证获取年龄
     * 多个用例数据,验证是否计算正确
     * 测试数据(身份证)+ 预期结果(年龄)
     */
    @DataProvider
    public Object[][] data(){
        return new Object[][]{
                {"350421201707052265",2,"生日小于当前月日"},//临界点
                {"350421201707032265",3,"生日等于当前月日"},//临界点
                {"350421201907042265",1,"未满1岁"}//不满一岁按一岁算

        };
    }

    @Test(dataProvider = "data",description = "根据身份证获取年龄")
    //输入参数值需按顺序一一对应dataprovider填写的数据内容顺序
    public void testIdcardUtil(String testData,int expectedResult,String message){
        int testResult = IdcardUtil.getAgeByIdCard(testData);
        Assert.assertEquals(testResult,expectedResult,message);
    }
}

方法类如下:

public class IdcardUtil {
    public static int getAgeByIdCard(String idCard) {
        int iAge = 0;
        String year = idCard.substring(6, 10);
        Calendar cal = Calendar.getInstance();
        int iCurrYear = cal.get(Calendar.YEAR);
        iAge = iCurrYear - Integer.valueOf(year);
        return iAge;
    }
}

五、TestNg测试用例集执行

运行maven test执行测试用例。
操作步骤:Idea右侧窗口点开Maven Projects,找到对应模块点击test,执行完成后即可在模块目录下找到target/allure-results

allure报告文件:

六、查看allure报告

方法1:allure serve target/allure-results直接查看报告

1)cmd命令进入到target所在目录
例:本次的duceap-boot-test-starter-metadata
2)执行命令查看报告
allure serve target/allure-results
命令说明:该命令启动的端口是随机分配,若需要使用固定端口可加入-p 2020,例:allure serve -p 2020 target/allure-results
3)命令执行时会自动使用默认浏览器打开地址,需要使用谷歌浏览器才能正常展示。

方法2:allure生成报告并打开查看

1)allure生成报告命令
allure generate target/allure-results/(源文件夹路径) -o target/allure-reports/(目标文件夹路径,需是空文件夹,无需手动创建,生成会自动创建)
2)打开生成的报告
有3种方式打开生成报告:allure open命令、tomcat启动应用、开发工具打开(idea或pycharm),具体操作如下:
1、Allure打开报告命令
allure open allure-reports

2、tomcat启动应用
报告放入tomcat的webapps中,执行bin\startup.bat启动应用,访问对应路径端口即可

3、开发工具打开(例:idea)
打开文件夹,右击index.html>Open in Browser>Chrome


七、Spring整合testng

1、加入@SpringBootTest
2、AbstractTestNGSpringContextTests:测试类只有继承了该类才能拥有注入实例能力,否则注入报错

原文地址:https://www.cnblogs.com/seamy/p/15654691.html