目錄
1、前言
2、框架結(jié)構(gòu)
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年的時候,根據(jù)項(xiàng)目組需要,編寫了一套 Java 版的自動化測試框架,可進(jìn)行包括 APP(Android、iOS)、H5、Web、接口的自動化測試任務(wù)。測試報(bào)告可通過 HTML 報(bào)告或 Excel 報(bào)告的方式進(jìn)行查看。此框架在項(xiàng)目組期間已落地使用并助力測試回歸時發(fā)現(xiàn)了一些問題(BUG)。
框架開發(fā)完成后,只維護(hù)了一段時間,之后(離開項(xiàng)目組)就一直到現(xiàn)在沒有再維護(hù)了,所以一些封裝的方法與框架設(shè)計(jì)思想等有些“過時”了。接下來回顧一下此框架,也算是一個框架總結(jié),為后續(xù)的升級改造做準(zhǔn)備。
2、框架結(jié)構(gòu)
測試框架(AllRound_Test)整體結(jié)構(gòu):
2.1、app
app 目錄存放手機(jī)應(yīng)用程序,分為 Android 和 iOS。當(dāng)執(zhí)行自動化腳本時,如果設(shè)置采用先安裝手機(jī)應(yīng)用程序的方式,則會根據(jù)路徑安裝指定的 APP 程序。
2.2、config
config 目錄存放配置文件。
app.properties 存放 Android / iOS 包名。
browserdriver.properties 存放瀏覽器驅(qū)動的路徑。
data.properties 存放測試數(shù)據(jù),分為: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 測試數(shù)據(jù),分為:Android、iOS、H5、接口。
表格數(shù)據(jù)內(nèi)容。
2.4、driver
driver 目錄存放瀏覽器驅(qū)動程序,按操作系統(tǒng)分為:Windows、Mac。
2.5、libs
libs 目錄,根據(jù)測試項(xiàng)目要求,使用 Jython 語言(即在 Java 環(huán)境下使用 Python 語言)。
2.6、pythonProject
pythonProject 目錄存放 Python 腳本文件。
如圖,一個單文件腳本(adder.py)、一個示例項(xiàng)目(TestDemo)。
例如 TestDemo.py 腳本(就是 Python 腳本語法,不需要任何修改)。
from selenium import webdriverimport unittest, time, osimport HTMLTestRunnerdef data_dirs():BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))DATA_DIRS = (os.path.join(BASE_DIR, ‘HTMLTestRunner生成測試報(bào)告’),)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”))#獲取當(dāng)前時間now = time.strftime(“%Y-%m-%d %H_%M_%S”)#定義個報(bào)告存放路徑filename = data_dirs() + ‘/’+now+’ result.html’fp = open(filename, ‘wb’)#定義測試報(bào)告runner =HTMLTestRunner.HTMLTestRunner(stream=fp, title=u’百度搜索測試報(bào)告’, description=u’用例執(zhí)行情況:’)#運(yùn)行測試用例runner.run(testunit)#關(guān)閉報(bào)告文件fp.close()
2.7、result
result 目錄存放測試日志與測試報(bào)告。
測試日志。
測試報(bào)告-測試步驟。
測試報(bào)告-總覽。
報(bào)錯自動截圖,并存儲在指定目錄里。
2.8、src
src 目錄存放基類、頁面元素、方法封裝、報(bào)告插件、測試用例、公共方法等。
(1)base 目錄存放基類,根據(jù)不同的場景分類,可執(zhí)行 APP(Android、iOS)、Web、接口、Python 腳本。
例如:BaseParpareApp_android.java (執(zhí)行手機(jī)端 Android,部分代碼)
(2)pages 目錄存放頁面元素類。
例如:DemoPage_android.java(部分代碼)
(3)pageshelper 目錄存放用于不同頁面的方法封裝。
例如:WeiboPageHelper_android.java(封裝登錄,部分代碼)
(4)plugins 目錄存放測試報(bào)告插件,支持生成 Excel 或 HTML 共三種方式的測試報(bào)告。
(5)testcases 目錄存放測試用例。
例如 AppTest_Weibo_android.java(授信,部分代碼)
(6)utils 目錄存放公共方法。各種點(diǎn)擊事件、讀寫 Excel 表格、初始化數(shù)據(jù)、調(diào)用命令行、接口方法封裝、MySQL 操作(增刪改查)、鍵盤操作、SSH 命令操作、MD5 加密、MongoDB 操作(增刪改查)、驅(qū)動本地/遠(yuǎn)程瀏覽器、封裝 Selenium 方法和常用方法、啟動與關(guān)閉 appium 服務(wù)等。
例如:SelectBrowser.java(打開本地瀏覽器,部分代碼)
2.9、sshPrivateKey
sshPrivateKey 目錄存放用于連接 Linux 的 SSH 私鑰。
2.10、startService
startService 目錄存放可在命令行執(zhí)行啟動 Appium 服務(wù)的命令。
啟動 Appium 服務(wù):
appium –address 127.0.0.1 –port 4723 –no-reset –session-override
2.11、target
target 目錄存放通過 Maven 編譯該項(xiàng)目后所產(chǎn)生的 .class 文件等。
2.12、testng
testng 目錄存放單元測試框架 TestNG 所要執(zhí)行腳本的 .xml 文件。
例如:testng_weibo_honor7.xml(配置參數(shù),部分內(nèi)容)
將測試用例合并為測試集。
三種測試報(bào)告模式,選擇哪種,就把監(jiān)聽打開即可。
2.13、pom.xml
pom.xml 文件,描述了該項(xiàng)目的 Maven 坐標(biāo),依賴關(guān)系,開發(fā)者需要遵循的規(guī)則,組織等,是項(xiàng)目級別的配置文件。
使用 Jenkins 持續(xù)集成的方式,進(jìn)行手動或自動或定時觸發(fā)此文件,來進(jìn)行測試腳本的執(zhí)行。
例如:pom_android_weibo.xml 文件(部分內(nèi)容)
主要依賴的包 testng、appium、jxl、log4j、selenium、mysql-connector-java、okhttp、allure-testng-adaptor、mongo-java-driver 等。
指定執(zhí)行的 TestNG 的 .xml 文件。
整體流程:
Jenkins(手動/自動/定時)觸發(fā) -> Maven 的 pom.xml 文件 -> TestNG 的 .xml 文件 -> 測試集(啟動服務(wù)、測試基類、測試用例、操作步驟、公共方法)-> 測試日志、測試報(bào)告、錯誤截圖
公眾號:AllTests軟件測試