zoukankan      html  css  js  c++  java
  • 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:测试类只有继承了该类才能拥有注入实例能力,否则注入报错

  • 相关阅读:
    解决使用intellij idea开发MAVEN项目在target目录下不存在mapper.xml文件
    Mybatis中接口和对应的mapper文件位置配置详解
    Mybatis(1、核心配置文件、Properties、Settings、typeAliases...)
    nginx的常用负载均衡算法,分别是
    修改JVM的参数、Jstat、Jstack、gclog
    shiro 系列
    sso简单原理及实现
    Thymeleaf3.0内容
    Thymeleaf模板引擎+Spring整合使用方式的介绍
    给 IIS Express 配置虚拟目录
  • 原文地址:https://www.cnblogs.com/seamy/p/15654691.html
Copyright © 2011-2022 走看看