webTest-----webUI自動化框架

webTest框架介紹

地址

https://github.com/wuranxu/webTestcss

但願你們可以喜歡!!!html

簡介

本框架基於Python3+selenium3+unittest組成,用戶以Page Object的模式編寫用例。元素的定位和操做按照頁面劃分,達到Web端自動化迴歸測試的目的,並生成測試報告。瀏覽器兼容性暫時未完善。
本例子展現了一個必應首頁搜索"龍珠超"的測試用例,比較簡陋。python

運行日誌

image.png

過程截圖

image.png

效果展現

image.png

快速上手

  • 從遠程倉庫拉取代碼

git clone https://github.com/wuranxu/webTest.gitmysql

image.png

  • 安裝依賴包

進入下載好的webTest目錄,並在此目錄運行install.py
mac/Linux: python3 install.py
windows: python install.pylinux

image.png

  • 運行demo

在webTest目錄輸入命令(確保chrome瀏覽器已安裝, 驅動會自行下載):git

python run_case.pygithub

image.png

環境配置

注: 無桌面版Linux目前只作到支持firefox
  • os: Windows/Mac os x/Linux
  • Python3.x
  • Chrome瀏覽器

目錄結構

project

└───ErrorPic
|
└───DataBase
|
└───Log
|
└───Xmind
|
└───Page
|
└───Report
|
└───Page
|
└───TestSuite
|   |    base_case.py
|
└───templates
|   |   report_templates.html
└───TestResult
|   |   report_templates.html
|   |   GenerateReport.py
|   |   Result.py
|
└───chromedriver
│   │   chromedriver.exe
|
└───Tools
|   |   chrome.py
|   |   decorator.py
|   |   driver.py
|   |   logger.py
|   |   web_tool.py
|
│   README.md
│   run_case.py
|   requirements.txt    
│   config.py
|   webdriver_test.log

內容介紹

  • chromedriverweb

    存放chromedriver驅動, 若本機未安裝chromedriver則自動匹配本機chrome版本下載對應驅動。sql

  • DataBasechrome

    存放Mysql和Mongodb的鏈接類

  • ErrorPic

    存放出錯截圖, 目前根據用例名稱建立文件夾並存放。

  • Log

    存放全部日誌文件, 目前只有webdriver_test.log, 主要目的是將日誌區分開來。

  • Page

    頁面目錄, 可擴展, 針對不一樣模塊的頁面可設計不一樣目錄結構。通常存放該頁面的操做(Action)以及元素(Location), 用例具體斷言不建議寫於此處(因人而異)。

  • Report

    存放測試報告,爲html形式,可右鍵經過瀏覽器打開,使用chrome效果尤佳。

  • templates

    存放html模板,傳入測試結果以生成測試報告。

  • TestResult

    • GenerateReport.py

      是組織測試結果, 生成測試報告, 填入數據至html報告模板的方法。

    • Result.py

      繼承自unittest.TextTestResult類, 存放測試結果。

  • TestSuite

    測試套件目錄, 可擴展, 子目錄爲某個測試集。測試集中存放測試用例。

    • base_case.py

      存放基礎測試用例。

  • Tools

    • chrome.py

      用於更新/下載chromedriver, 目前只支持mac os和windows系統。

    • decorator.py

      用於存放自動截圖/重跑等裝飾器, 主要是爲測試函數添加錯誤截圖以及重跑等功能。

    • driver.py

      繼承自WebDriver類, 主要用於簡化原生api以及添加切換frame/handle等api。

    • logger.py

      記錄日誌的功能函數。

    • web_tool.py

      用於Web自動化測試的工具類, 包括截圖、獲取用例等方法。

    • xmind_reader.py

      用於解析xmind文件,暫時不支持過於複雜的xmind。用例的大概編寫方式以下圖。
      image

  • Xmind

    存放Xmind文件, xmind文件用於編寫測試用例。

  • config.py

    用於存放絕大部分配置。繼承於BaseConf類, 可擁有本身的配置。

  • requirements.txt

    用於存放本框架所需庫。

  • run_case.py

    存放組織用例, 生成測試套件, 運行測試用例等函數。

  • webdriver_test.log

    存放測試用例執行時候的有關操做和錯誤信息等。

注: 以上目錄結構/命名可能並不合理, 還望海涵。


使用手冊

如下內容若已安裝, 可跳過。
  • 安裝Python3

    Python3.6下載地址

    下載對應操做系統的Python版本並安裝。

  • 下載IDE(非必須)

    推薦Pycharm

    Pycharm下載地址

  • 安裝必須的庫

    目錄中有install.py, 安裝好Python以後, 在終端窗口中輸入以下命令:

    Linux/mac: python3 install.py

    windows: python install.py

    注意: 安裝時須要帶上install.py路徑或者進入該文件所在目錄。

  • Pycharm配置(如有)

    • 第一步: 配置項目Python環境

      File->Open

    image.png

    選擇webTest目錄, 點擊窗口右下角的Open

    image.png

    打開Preferences, 在Project Interpreter裏選擇剛纔安裝Python的地址, 點擊OK

    image.png

    • 第二步: 配置run_case.py

    點擊Edit Configurations

image.png

若是沒有Python配置的話, 點擊圖中"+"圖標, 而後選擇Python並添加
image.png

image.png

配置腳本
image.png

  • 第三步: 運行用例

右擊run_case.py, 選擇Run則爲運行模式, Debug則爲調試模式
image.png

  • 用例編寫規則

    Python:

    • 可參考Search.py編寫用例(最好用例的類名不重複)
    • 用例須要寫在TestSuite/測試集/這種目錄下
    • 用例須要繼承base_case.py
    • 用例須要以test開頭如test_bmp
    • 用例的test函數須要帶上screenshot的裝飾器, 不帶無截圖功能
    • 報告會按照時間生成, 且會寫入2份report.html
    • 日誌在webdriver_test.log查看
    • Page頁面編寫此頁面須要的操做及元素
    • Location類是封裝了WebElement, 其中包含name, value, 默認以css方式定位
    • Location類實例化的時候可指定第三個參數, 方便使用其餘定位的同窗。如:

      menu = Location("大後臺左側菜單", ".menuItem", "XPATH")

    Xmind:

    • 畫布(必填)

      爲TestSuite名, 可容許重複畫布名

    • 根元素(必填)

      爲用例的Class名

    • 描述(最好有)

      爲該用例的測試點

    • 頁面(必填)

      須要填寫Page下的頁面, 子節點爲其頁面下須要用到的方法, 方法後若是還有子節點,則爲該方法返回值, 如有多個返回值則用;分割且該返回值會被保留方便作斷言

    • 跳過(不填默認生成用例)

      不爲True的時候均會生成用例

    • 重跑次數(可選)

      用例若失敗, 從新運行的次數, 默認爲0。

    • 步驟(必填)

      子節點爲頁面方法或斷言, 若以assert開頭則爲斷言, 不然則判斷爲方法, 若在頁面中忘了填寫該方法, 則調用系統內部方法。

      方法節點的子節點爲參數, 一樣以;分割。

      斷言的子節點爲2或3個, 如assertEqual, 可理解是A==B?true:msg, 最後一個參數是msg, 具體出錯緣由。

    • 已知缺陷
      1. 截止到如今還未支持非頁面方法調用如print;
      2. 不支持導入本用例須要的其餘類庫;
      3. 其餘不爽的有待補充。

亮痛點

  • 瀏覽器驅動

    • 問題: 瀏覽器驅動偶爾會與瀏覽器對應不上
    • 解決方案: 自動下載, 但只針對mac/win下的chrome, 且版本不能過低。firefox不支持, 任性。
  • 集成jenkins

    • 問題: centos6.x不帶桌面沒法運行UI自動化用例
    • 解決方案:

      1. phantomJs(不合適, 仍是要寫出來)

        新版selenium使用的時候會提示被廢棄, 建議用無頭模式取代, 且運行不穩定。

      2. Chrome無頭模式(centos7以上應可行)

        因爲jenkins所在機器centos6.x版本太低, 被Chrome放棄支持, Chrome瀏覽器沒法安裝

      3. Firefox無頭模式(目測不可行, 測太屢次了記不住)

        Firefox可正常安裝, 可是geckodriver比較挑瀏覽器版本, 屢次試驗不成功, 換了無數個瀏覽器版本+geckodriver版本後已經忘了是否可行。

      4. Firefox+虛擬桌面(目前解決方案)

        見用例driver.py文件。但不完美, 錯誤截圖顯示的網頁內容都····一言難盡, 好像一個瞎子終於重獲光明卻發現本身滿臉麻子。回到正題, 爲何不自動同步firefox驅動, 由於在c方案卡殼過久比較噁心。

        版本信息:

        geckodriver0.16

        selenium>=3.4

        firefox52.0

  • 測試報告

    因爲郵件不支持js和引入的css, 致使報告巨難看。因此採用了附件形式, 目前是個比較大的痛點。

  • Page Object

    關於po, 確實也沒有很深的研究, 只等小白鼠試水了。

  • api封裝

    api封裝得還不夠多, 除了經常使用方法之外。可是基本上每一個方法都插入了顯示等待, 大大下降了元素找不到, 點不到, 各類不到的可能性。

  • 重跑

    解決了使用裝飾器重跑用例不執行setUp+tearDown的問題。

  • 錯誤截圖

    截圖用base64保存, 因此只有錯誤的時候纔會截圖。由於base64太大。

  • Xmind編寫用例

    這算一個小亮點吧。

  • 自動化配置環境

    已完成, 方便使用。

  • 數據庫

    支持mongo和mysql。

  • 執行效率

    目前是單線程, 還沒作多線程, 時間緊迫。因此在jenkins那臺老爺機比較慢, 若是用例多起來了確定是不行的。

  • 代碼規範/質量

    寫得一塌糊塗, 你們看不過去就幫忙改了吧, 跪謝orz

相關文章
相關標籤/搜索