基於APPIUM測試微信公眾號的UI自動化測試框架(結合Allure2測試報告框架)
框架初衷
前兩周組內的小夥伴跟我說她現在測試的微信公眾號項目(保險)每次上新產品時測試起來很費時,存在大量的重復操作(點點點),手工測試每個產品可能需要半天到一天的時間,復雜的產品需要兩天。
由於保險下單的過程中字段比較多,輸入費勁的同時測試用例也很多(不同年齡段、工種、有無社保等),且!每個產品的頁面都有部分差異!
問我能否基於UI自動化提高她測試新產品的測試速度,同時用於上線時生產的驗證。
因為我寫過微信公眾號頁面的UI監控腳本,也嘗試過基於appium的多機並發測試,於是我就想,能否搭建一個框架,讓小夥伴每次測試新產品的時候只要輸入測試數據+修改產品差異部分代碼,然後框架分發給不同的手機去執行,最後展示測試報告?
最終效果
一個case大約3-5分鐘,三臺手機執行測話三個新產品半天就能測完。
下面是放到jenkins上運行demo的測試報告。
下面是用例運行失敗時的界面,提供截圖、重試、case日誌以及appium的日誌。
框架介紹
1.主要工具
JAVA 版本1.8
appium-server 版本1.6.3
appium java-client 版本5.0.0-BETA8
testNG 用例組織
Allure2 測試報告
Jenkins 持續集成
Git 代碼管理
2.工程目錄及主要代碼
pages:沒有采用PO模式,頁面以接口的形式定義,頁面元素即為變量。
pageoptions:頁面功能封裝在pageoptions包中,封裝成靜態方法。
testcase:繼承BaseDriver,driver初始化後即可執行測試。
util:appiumserver啟動工具類、失敗自動截圖等
下面是每個package內的代碼。
2.1 POM.XML
<?xml version="1.0" encoding="UTF-8"?>
<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.cpeoc</groupId>
<artifactId>jyx</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>jyx</name>
<properties>
<java.version>1.7</java.version>
<aspectj.version>1.8.10</aspectj.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>6.11</version>
</dependency>
<dependency>
<groupId>io.appium</groupId>
<artifactId>java-client</artifactId>
<version>5.0.0-BETA8</version>
</dependency>
<dependency>
<groupId>io.qameta.allure</groupId>
<artifactId>allure-testng</artifactId>
<version>2.0-BETA14</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest-all</artifactId>
<version>1.3</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>1.7.21</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>dom4j</groupId>
<artifactId>dom4j</artifactId>
<version>1.6.1</version>
</dependency>
<dependency>
<groupId>com.belerweb</groupId>
<artifactId>pinyin4j</artifactId>
<version>2.5.1</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.3</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.18.1</version>
<configuration>
<testFailureIgnore>true</testFailureIgnore>
<argLine>
-javaagent:"${settings.localRepository}/org/aspectj/aspectjweaver/${aspectj.version}/aspectjweaver-${aspectj.version}.jar"
</argLine>
<suiteXmlFiles>
<suiteXmlFile>testng-OnePhone.xml</suiteXmlFile>
</suiteXmlFiles>
<!-- <workingDirectory>target\</workingDirectory> -->
</configuration>
<