通过前四步的框架完善,此时已经可以开始写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获取,也可以一起交流技术。
欢迎打扰