1. 程式人生 > >Appium+python自動化(四十二)- 壽終正寢完結篇 - 結尾有驚喜,過時不候(超詳解)

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構建觸發器

  1. 觸發遠端構建:如果您想通過訪問一個特殊的預定義URL來觸發新構建,請啟用此選項。
  2. Build after other projects are built:在其他專案觸發的時候觸發,裡面有分為三種情況,也就是其他專案構建成功、失敗、或者不穩定的時候觸發專案;
  3. Build periodically 定時構建
  4. GitHub hook trigger for GITScm polling,根源Git的原始碼更新來觸發構建
  5. 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自動化測試框架就全部完成了,聰明的你都懂了嗎???框架自己搭建起來嗎???嘿嘿!慢慢地來吧。

 

關注公眾號傳送:小白福音,可以領取一套測試的小白入門教程視訊