Java接口自动化测试框架系列(五)测试框架整体执行流程

通过前四步的框架完善,此时已经可以开始写TestCase。

但是想框架整体运行流畅还需要对maven与testng的配置文件进行编写。

一、Maven配置文件

在pom.xml文件种配置框架所需要的jar包坐标,并通过build配置编码、版本、执行的文件地址、存在case失败时的处理方式等信息

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.ShangHai_Auto_Test</groupId>
  <artifactId>ShangHai_Auto_Test</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>jar</packaging>

  <name>ShangHai_Auto_Test</name>
  <url>http://maven.apache.org</url>
  
    <properties>
        <!-- 文件拷贝时的编码 -->
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <!-- 编译时的编码 -->
        <maven.compiler.encoding>UTF-8</maven.compiler.encoding>
    </properties>

  <build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.5.1</version>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
            </configuration>
        </plugin>
        <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>2.5</version>
        <configuration>
           <!-- 解决maven执行test时,输出testnglog出现的中文乱码 -->
           <forkMode>once</forkMode> 
           <argLine>-Dfile.encoding=UTF-8</argLine> 
           <!-- 跳过失败用例 -->
           <testFailureIgnore>true</testFailureIgnore>
           <!-- 配置XML需要执行的文件 -->
           <suiteXmlFiles><file>TestNG.xml</file></suiteXmlFiles>
       </configuration>
    </plugin>
    </plugins>
   </build>

  <dependencies>
  <dependency>    
    <groupId>cn.tass</groupId>    
    <artifactId>hsmGeneralFinance</artifactId>    
    <version>1.0</version>    
    <scope>system</scope>    
    <systemPath>${project.basedir}/lib/hsmGeneralFinance-2.0.9.jar</systemPath>
    </dependency>
    <dependency>
        <groupId>com.google.code.gson</groupId>
        <artifactId>gson</artifactId>
        <version>2.8.9</version>
    </dependency>
      <dependency>
      <groupId>org.dom4j</groupId>
      <artifactId>dom4j</artifactId>
      <version>2.1.0</version>
    </dependency>
    <dependency>
      <groupId>org.spiredoc</groupId>
      <artifactId>spiredoc</artifactId>
      <version>5.2.0</version>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.dataformat</groupId>
        <artifactId>jackson-dataformat-xml</artifactId>
        <version>2.9.0</version>
    </dependency>
    <!--excel解析-->
    <dependency>
    <groupId>net.sourceforge.jexcelapi</groupId>
    <artifactId>jxl</artifactId>
    <version>2.6.12</version>
    </dependency>
    <!--Spring-->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>5.1.9.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-jdbc</artifactId>
      <version>5.1.9.RELEASE</version>
    </dependency>
    <!-- 内嵌tomcat -->
    <dependency>
        <groupId>org.apache.tomcat.embed</groupId>
        <artifactId>tomcat-embed-core</artifactId>
        <version>9.0.52</version>
        <scope>compile</scope>
        <exclusions>
            <exclusion>
                <artifactId>tomcat-annotations-api</artifactId>
                <groupId>org.apache.tomcat</groupId>
            </exclusion>
        </exclusions>
    </dependency>
    <!-- 阿里json处理类 -->
    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>fastjson</artifactId>
      <version>1.2.14</version>
    </dependency>
    <dependency>     
    <groupId>com.aliyun</groupId>
    <artifactId>alibaba-dingtalk-service-sdk</artifactId>
    <version>1.0.1</version>
  </dependency>
    <dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-lang3</artifactId>
      <version>3.4</version>
    </dependency>
    <!--testng依赖 -->
    <dependency>
        <groupId>org.testng</groupId>
        <artifactId>testng</artifactId>
        <version>6.8</version>
    </dependency>
    
    <dependency>
        <groupId>com.relevantcodes</groupId>
        <artifactId>extentreports</artifactId>
        <version>2.41.1</version>
    </dependency>
    <dependency>
        <groupId>com.vimalselvam</groupId>
        <artifactId>testng-extentsreport</artifactId>
        <version>1.3.1</version>
    </dependency>
    <dependency>
        <groupId>com.aventstack</groupId>
        <artifactId>extentreports</artifactId>
        <version>3.0.6</version>
    </dependency>
    
    <!-- HTTP client依赖 -->
    <dependency>
        <groupId>org.apache.httpcomponents</groupId>
        <artifactId>httpclient</artifactId>
        <version>4.5.6</version>
    </dependency>
    <dependency>
      <groupId>commons-httpclient</groupId>
      <artifactId>commons-httpclient</artifactId>
      <version>3.1</version>
    </dependency>
    <!-- log4j依赖 -->
    <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>1.2.12</version>
    </dependency>
    <!-- mybatis依赖 -->
    <dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.4.0</version>
    </dependency>
    <!-- MySQL数据库依赖 -->
    <dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.11</version>
    </dependency>
    <!-- json依赖 -->
    <dependency>
    <groupId>net.sf.json-lib</groupId>
    <artifactId>json-lib</artifactId>
    <version>2.4</version>
    <classifier>jdk15</classifier>
    </dependency>
    <dependency>
      <groupId>cn.hutool</groupId>
      <artifactId>hutool-all</artifactId>
      <version>4.5.10</version>
    </dependency>
    <dependency>
        <groupId>com.itextpdf</groupId>
        <artifactId>itextpdf</artifactId>
        <version>5.3.2</version>
    </dependency>
    <dependency>
            <groupId>org.bouncycastle</groupId>
            <artifactId>bcprov-jdk15on</artifactId>
            <version>1.64</version>
    </dependency>
  </dependencies>
</project>

二、TestNG.xml配置文件

第一步时pom指定的testng.xml运行文件,通过suite-test来指定运行的case的地址,并且进行监听的注册。

<?xml version="1.0" encoding="UTF-8"?>
<suite name="自动化测试" parallel="classes">
    <test name="落单">
        <classes>
            <class name="com.Auto_Test.Case.Add_Orders" />
        </classes>
    </test>
    <test name="投保">
        <classes>
            <class name="com.Auto_Test.Case.Insures" />
        </classes>
    </test>
    <!-- 注册监听 -->
    <listeners>
<listener class-name="com.Auto_Test.listeners.ExtentTestNGIReporterListener"/> <listener class-name="com.Auto_Test.listeners.DingTalkListener"/> </listeners> </suite>

三、TestCase详解

第一步与第二步完成后,就可以开始编写case了,首先定义所需要的变量、调用解析excel的公共方法

    //定义一个list对象,获取CSV文件中的数据
    List<String[]> csvlist = null;
    //传参list
    public ArrayList<NameValuePair> list;
    //log方法
    Logs log = new Logs(getClass());
    Map<String, String> map = null;
    //配置文件取值
    @DataProvider(name = "host")
    public Object[][] parameter() throws IOException, BiffException {
        log.info("读取地址");
        ReadCSV e=new ReadCSV("citydata", "city");
        return e.getExcelData();
    }

此时可以开始编写case,通过获取excel的加密方式,来进行不同的处理与请求。

通过返回的字段进行断言比对,运行成功后失败都会把结果记录到测试报告中。

    //落单
    @Test(dataProvider = "host")
    public void Add_Order(HashMap<String, String> citydata) {
        //定义落单的url
        String add_order_url = citydata.get("city_url")+"***";
        if (citydata.get("encryption_type").equals("***")) {
            try {
                map = GUOTAI_GUANGXI.encryptions(add_order_url,citydata.get("appKey"));
                //进行断言对比
                assertEquals("1", map.get("ResultCode"));
                Reporter.log("OrderNo:"+map.get("OrderNo"));
            } catch (Exception e) {
                // TODO: handle exception
                Reporter.log(e.toString());
                assertTrue(false);
            }
        } else if (citydata.get("encryption_type").equals("***")) {
            try {
                map = GUOTAI_JSON.encryptions(add_order_url,citydata.get("appKey"),citydata.get("appSecret"),citydata.get("city_name"));
                //进行断言对比
                if (map.get("ResultCode").equalsIgnoreCase("1")) {
                    Reporter.log("OrderNo:"+map.get("OrderNo"));
                    assertTrue(true);
                } else {
                    assertTrue(false);
                } 
                
            } catch (Exception e) {
                // TODO: handle exception
                Reporter.log(e.toString());
                assertTrue(false);
            }
        } else if (citydata.get("encryption_type").equals("***")) {
            try {
                map = GUANGLIANDA_XIAN.encryptions(add_order_url);
                assertEquals("SUCCESS", map.get("status"));
                Reporter.log("OrderNo:"+map.get("orderNo"));
            } catch (Exception e) {
                // TODO: handle exception
                Reporter.log(e.toString());
                assertTrue(false);
            }
        }
        
    }

需要此项目的可以加我微信15224918643获取,也可以一起交流技术。

欢迎打扰

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值