Appium+python自動化(四十二)- 壽終正寢完結篇 - 結尾有驚喜,過時不候(超詳解)
1.簡介
按照上一篇的計劃,今天給小夥伴們分享執行測試用例,生成測試報告,以及自動化平臺。今天這篇分享講解完。Appium自動化測試框架就要告一段落了。
2.執行測試用例&報告生成
測試報告,巨集哥已經講解了testng、HTMLTestRunner、allure等等,今天就在講解一個新的測試報告BSTestRunner。這個有的小夥伴有問到,所以在這裡特地的給這部分的小夥伴們演示一下。
2.1 下載BSTestRunner
直接輸入網址,下載後,引入專案中即可。
BSTestRunner下載地址
關於這部分可以看巨集哥的一個例項:demo
2.2 run.py
執行所有測試用例。這個是所有框架的入口。
2.3參考程式碼
# coding=utf-8 # 1.先設定編碼,utf-8可支援中英文,如上,一般放在第一行 # 2.註釋:包括記錄建立時間,建立人,專案名稱。 ''' Created on 2019-11-21 @author: 北京-巨集哥 QQ交流群:707699217 Project:Appium自動化測試框架綜合實踐 - 壽終正寢完結篇 ''' # 3.匯入模組 import unittest from BSTestRunner import BSTestRunner import time,logging import sys path='D:\\kyb_testProject\\' sys.path.append(path) test_dir='../test_case' report_dir='../reports' discover=unittest.defaultTestLoader.discover(test_dir,pattern='test_login.py') now=time.strftime('%Y-%m-%d %H_%M_%S') report_name=report_dir+'/'+now+' test_report.html' with open(report_name,'wb') as f: runner=BSTestRunner(stream=f,title='Kyb Test Report',description='kyb Android app test report') logging.info('start run test case...') runner.run(discover)
注意:
pattern引數可以控制執行不同模組的用例,如下所示表示執行指定路徑以test開頭的模組
discover = unittest.defaultTestLoader.discover(test_dir, pattern='test*.py')
3.Bat批處理執行測試
前面指令碼開發階段我們都是使用pycharm IDE工具來執行指令碼,但是當我們的指令碼開發完成後,還每次開啟IDE來執行自動化測試就不合理了,因為不僅每次開啟比較麻煩,而且pycharm記憶體資源佔用比較“感人”!這樣非常影響執行效率。 針對這種情況,我們可以使用cmd命令或者封裝為bat批處理指令碼來執行。
3.1啟動appium服務
啟動appium服務通過批量處理指令碼。
3.1.1start_appium.bat
3.1.2參考程式碼
@echo off appium pause
@echo off 為關閉“回顯”,讓命令列介面顯得整潔一些。
3.2執行測試用例
執行測試用例就是說到底就是通過批量指令碼執行框架入口檔案run.py。
3.2.1run.bat
3.2.2參考程式碼
@echo off d: cd D:\kyb_testProject\test_run C:\Python35\python.exe run.py pause
3.3注意事項:
3.3.1執行之前需要在run.py指令碼新增如下內容:
import sys
path='D:\\kyb_testProject\\'
sys.path.append(path)
專案在IDE(Pycharm)中執行和我們在cmd中執行的路徑是不一樣的,在pycharm中執行時, 會預設pycharm的目錄+我們的工程所在目錄為執行目錄。
而在cmd中執行時,會以我們的工程目錄所在目錄來執行。在import包時會首先從pythonPATH的環境變數中來檢視包,如果沒有你的PYTHONPATH中所包含的目錄沒有工程目錄的根目錄,那麼你在匯入不是同一個目錄下的其他工程中的包時會出現import錯誤。
3.3.2.以上指令碼編碼格式必須為utf-8
4.自動化測試平臺
前面我們已經開發完測試指令碼,也使用bat批處理來封裝了啟動Appium服務和執行測試用例。但是還是不夠自動化,比如我想每天下班時自動跑一下用例,或者當研發打了新包後自動開始執行測試指令碼測試新包,那麼該如實現呢?
4.1持續整合(Continuous integration)
持續整合是一種軟體開發實踐,即團隊開發成員經常整合他們的工作,通過每個成員每天至少整合一次,也就意味著每天可能會發生多次整合,簡稱CI。每次整合都通過自動化的構建(包括編譯,釋出,自動化測試)來驗證,從而儘早地發現整合錯誤。
4.2Jenkins簡介
Jenkins是一個開源軟體專案,是基於Java開發的一種持續整合工具,用於監控持續重複的工作,旨在提供一個開放易用的軟體平臺,使軟體的持續整合變成可能。
4.3下載與安裝
下載地址:https://jenkins.io/download/
下載後安裝到指定的路徑即可,預設啟動頁面為localhots:8080,如果8080埠被佔用無法開啟,可以進入到jenkins安裝目錄,找到jenkins.xml配置檔案開啟,修改如下程式碼的埠號即可。
<arguments>-Xrs -Xmx256m -Dhudson.lifecycle=hudson.lifecycle.WindowsServiceLifecycle -jar "%BASE%\jenkins.war" --httpPort=8080 --webroot="%BASE%\war"</arguments>
4.4構建觸發器
- 觸發遠端構建:如果您想通過訪問一個特殊的預定義URL來觸發新構建,請啟用此選項。
- Build after other projects are built:在其他專案觸發的時候觸發,裡面有分為三種情況,也就是其他專案構建成功、失敗、或者不穩定的時候觸發專案;
- Build periodically 定時構建
- GitHub hook trigger for GITScm polling,根源Git的原始碼更新來觸發構建
- Poll SCM:定時檢查原始碼變更(根據SCM軟體的版本號),如果有更新就checkout最新code下來,然後執行構建動作。如下圖配置:
*/5 * * * * (每5分鐘檢查一次原始碼變化)
4.5jenkins定時構建語法
這是其實就是corn表示式,幾分鐘就可以掌握,有興趣的可以百度一下,花費幾分鐘簡單的學習一下。
* * * * *
(五顆星,中間用空格隔開)
- 第一個*表示分鐘,取值0~59
- 第二個*表示小時,取值0~23
- 第三個*表示一個月的第幾天,取值1~31
- 第四個*表示第幾月,取值1~12
- 第五個*表示一週中的第幾天,取值0~7,其中0和7代表的都是週日
4.6使用案例
每天下午下班前18點定時構建一次
0 18 * * *
每天早上8點構建一次
0 8 * * *
每30分鐘構建一次:
H/30 * * * *
注意:關於jenkins的詳細知識,可以看巨集哥的:jenkins系列文章。
5.小結
到此,Appium自動化測試框架就全部完成了,聰明的你都懂了嗎???框架自己搭建起來嗎???嘿嘿!慢慢地來吧。