回顾18年我的Java自动化测试框架
目錄
1、前言
2、框架結構
2.1、app
2.2、config
2.3、data
2.4、driver
2.5、libs
2.6、pythonProject
2.7、result
2.8、src
2.9、sshPrivateKey
2.10、startService
2.11、target
2.12、testng
2.13、pom.xml
1、前言
18年的時候,根據項目組需要,編寫了一套 Java 版的自動化測試框架,可進行包括 APP(Android、iOS)、H5、Web、接口的自動化測試任務。測試報告可通過 HTML 報告或 Excel 報告的方式進行查看。此框架在項目組期間已落地使用并助力測試回歸時發現了一些問題(BUG)。
框架開發完成后,只維護了一段時間,之后(離開項目組)就一直到現在沒有再維護了,所以一些封裝的方法與框架設計思想等有些“過時”了。接下來回顧一下此框架,也算是一個框架總結,為后續的升級改造做準備。
2、框架結構
測試框架(AllRound_Test)整體結構:
2.1、app
app 目錄存放手機應用程序,分為 Android 和 iOS。當執行自動化腳本時,如果設置采用先安裝手機應用程序的方式,則會根據路徑安裝指定的 APP 程序。
2.2、config
config 目錄存放配置文件。
app.properties 存放 Android / iOS 包名。
browserdriver.properties 存放瀏覽器驅動的路徑。
data.properties 存放測試數據,分為:Android、iOS、H5、接口。
linuxdriver.properties 存放連接 Linux 的配置信息。
mongodriver.properties 存放連接 MongoDB 的配置信息。
sqldriver.properties 存放 MySQL 的配置信息。
sshPrivateKey.properties 存放連接 SSH 的密鑰路徑。
url.properties 存放訪問的 URL 地址,分為:H5、Web。
2.3、data
data 目錄存放格式為 .xls 測試數據,分為:Android、iOS、H5、接口。
表格數據內容。
2.4、driver
driver 目錄存放瀏覽器驅動程序,按操作系統分為:Windows、Mac。
2.5、libs
libs 目錄,根據測試項目要求,使用 Jython 語言(即在 Java 環境下使用 Python 語言)。
2.6、pythonProject
pythonProject 目錄存放 Python 腳本文件。
如圖,一個單文件腳本(adder.py)、一個示例項目(TestDemo)。
例如 TestDemo.py 腳本(就是 Python 腳本語法,不需要任何修改)。
from selenium import webdriver import unittest, time, os import HTMLTestRunnerdef data_dirs():BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))DATA_DIRS = (os.path.join(BASE_DIR, 'HTMLTestRunner生成測試報告'),)d = '/'.join(DATA_DIRS)print(d)return dclass Baidu(unittest.TestCase):def setUp(self):self.driver = webdriver.Chrome()self.driver.implicitly_wait(10)self.base_url = "http://www.baidu.com/"self.verificationErrors = []#百度搜索用例def test_baidu_search(self):u'''百度搜索用例'''driver = self.driverdriver.get(self.base_url)driver.find_element_by_id("kw").send_keys("HTNMLTestRunner")driver.find_element_by_id("su").click()def tearDown(self):self.driver.quit()self.assertEqual([], self.verificationErrors)if __name__ == "TestDemo":#測試套件testunit=unittest.TestSuite()#添加測試用例到測試套件中testunit.addTest(Baidu("test_baidu_search"))#獲取當前時間now = time.strftime("%Y-%m-%d %H_%M_%S")#定義個報告存放路徑filename = data_dirs() + '/'+now+' result.html'fp = open(filename, 'wb')#定義測試報告runner =HTMLTestRunner.HTMLTestRunner(stream=fp, title=u'百度搜索測試報告', description=u'用例執行情況:')#運行測試用例runner.run(testunit)#關閉報告文件fp.close()?
2.7、result
result 目錄存放測試日志與測試報告。
測試日志。
測試報告-測試步驟。
測試報告-總覽。
報錯自動截圖,并存儲在指定目錄里。
2.8、src
src 目錄存放基類、頁面元素、方法封裝、報告插件、測試用例、公共方法等。
(1)base 目錄存放基類,根據不同的場景分類,可執行 APP(Android、iOS)、Web、接口、Python 腳本。
例如:BaseParpareApp_android.java (執行手機端 Android,部分代碼)
(2)pages 目錄存放頁面元素類。
例如:DemoPage_android.java(部分代碼)
(3)pageshelper 目錄存放用于不同頁面的方法封裝。
例如:WeiboPageHelper_android.java(封裝登錄,部分代碼)
(4)plugins 目錄存放測試報告插件,支持生成 Excel 或 HTML 共三種方式的測試報告。
(5)testcases 目錄存放測試用例。
例如 AppTest_Weibo_android.java(授信,部分代碼)
(6)utils 目錄存放公共方法。各種點擊事件、讀寫 Excel 表格、初始化數據、調用命令行、接口方法封裝、MySQL 操作(增刪改查)、鍵盤操作、SSH 命令操作、MD5 加密、MongoDB 操作(增刪改查)、驅動本地/遠程瀏覽器、封裝 Selenium 方法和常用方法、啟動與關閉 appium 服務等。
例如:SelectBrowser.java(打開本地瀏覽器,部分代碼)
2.9、sshPrivateKey
sshPrivateKey 目錄存放用于連接 Linux 的 SSH 私鑰。
2.10、startService
startService 目錄存放可在命令行執行啟動 Appium 服務的命令。
啟動 Appium 服務:
appium --address 127.0.0.1 --port 4723 --no-reset --session-override2.11、target
target 目錄存放通過 Maven 編譯該項目后所產生的 .class 文件等。
2.12、testng
testng 目錄存放單元測試框架 TestNG 所要執行腳本的 .xml 文件。
例如:testng_weibo_honor7.xml(配置參數,部分內容)
將測試用例合并為測試集。
三種測試報告模式,選擇哪種,就把監聽打開即可。
2.13、pom.xml
pom.xml 文件,描述了該項目的 Maven 坐標,依賴關系,開發者需要遵循的規則,組織等,是項目級別的配置文件。
使用 Jenkins 持續集成的方式,進行手動或自動或定時觸發此文件,來進行測試腳本的執行。
例如:pom_android_weibo.xml 文件(部分內容)
主要依賴的包 testng、appium、jxl、log4j、selenium、mysql-connector-java、okhttp、allure-testng-adaptor、mongo-java-driver 等。
指定執行的 TestNG 的 .xml 文件。
整體流程:
Jenkins(手動/自動/定時)觸發 -> Maven 的 pom.xml 文件 -> TestNG 的 .xml 文件 -> 測試集(啟動服務、測試基類、測試用例、操作步驟、公共方法)-> 測試日志、測試報告、錯誤截圖
精彩推薦
面試筆試系列
思維導圖系列
Linux常用命令壁紙
接口Requests系列
測試框架pytest系列
Jmeter快速上手之接口測試
自動化測試框架結構圖
移動安全框架(MobSF)
總結
以上是生活随笔為你收集整理的回顾18年我的Java自动化测试框架的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 现代计算机密码学阶段主要有两个方向,密码
- 下一篇: Java鸡兔同笼问题