1. 程式人生 > 實用技巧 >Web UI自動化測試框架Seldom實戰 一

Web UI自動化測試框架Seldom實戰 一

1、Seldom簡介

Seldom是基於selenium 和 unittest 的 Web UI自動化測試框架。

  • 提供更加簡單API編寫自動化測試。
  • 提供腳手架,快速生成自動化測試專案。
  • 全域性啟動和關閉瀏覽器,減少瀏覽器的啟動次數。
  • 支援用例引數化。
  • 支援用例失敗/錯誤重跑。
  • 定製化HTML測試報告,用例失敗/錯誤自動截圖。
  • 支援XML測試報告

2、Seldom 安裝

2.1、快速安裝

目前已經上傳 pypi.org ,可以使用pip命令安裝。

> pip install seldom

2.2、體驗最新程式碼

如果你想隨時體驗最新的程式碼,可以使用下面的命令。

> pip install
-U git+https://github.com/defnngj/seldom.git@master

2.3、如果需要對Seldeom進行二次開發,則可以克隆git專案下來進行二次開發

$ git clone https://github.com/SeldomQA/seldom.git 

3、seldom建立專案

3.1、建立一個python檔案test_sample.py

import seldom

class BaiduTest(seldom.TestCase):

    def test_case(self):
        """a simple test case """
        self.open(
"https://www.baidu.com") self.type(id_="kw", text="seldom") self.click(css="#su") self.assertTitle("seldom_百度搜索") if __name__ == '__main__': seldom.main("test_sample.py")

3.2、seldom提供了腳手架,可以快速的幫我們建立Web UI自動化專案。

> seldom --project mypro

4、seldon瀏覽器與驅動

4.1、在seldom中需要只需要修改一個配置即可設定瀏覽器。不僅支援瀏覽器,還支援Mobile web 模式,支援的phone和pad型別如下:

PHONE_LIST = [
    'iPhone 5', 'iPhone 6', 'iPhone 7', 'iPhone 8', 'iPhone 8 Plus',
    'iPhone X', 'Pixel 2', 'Pixel XL', "Galaxy S5"
]
PAD_LIST = ['iPad', 'iPad Pro']

在main()方法中通過browser引數設定不同的瀏覽器,預設為Chrome瀏覽器。

import seldom

if __name__ == '__main__':
    seldom.main(browser="chrome") # chrome瀏覽器,預設值
    seldom.main(browser="firefox") # firefox瀏覽器
    seldom.main(browser="ie")  # IE瀏覽器
    seldom.main(browser="opera") # opera瀏覽器
    seldom.main(browser="edge") # edge瀏覽器
    seldom.main(browser="safari") # safari瀏覽器
    seldom.main(browser="chrome_headless") # chrome瀏覽器headless模式
    seldom.main(browser="firefox_headless") # Firefox瀏覽器headless模式
    seldom.main(browser="iPhone 6") # iPhone 6 手機瀏覽器展示

4.2、開啟headless模式,Firefox和 Chrome瀏覽器支援headless模式,即將瀏覽器置於後臺執行,這樣不會影響到我們在測試機上完成其他工作。

import seldom
from seldom import ChromeConfig

#只需要將 ChromeConfig 類中的 headless 設定為True即可, Firefox瀏覽器配置方法類似。

if __name__ == '__main__':
    ChromeConfig.headless = True
    seldom.main(browser="chrome")

4.3、開放Chrome瀏覽器配置能力,seldom為了更加方便的使用驅動,遮蔽了瀏覽器的配置,但架不住部分個性化的需求,比如禁用瀏覽器外掛,設定瀏覽器代理等。所以,通過ChromeConfig類的引數來開放這些能力。

例如,瀏覽器忽略無效證書的問題。

import seldom
from seldom import ChromeConfig
from selenium.webdriver import ChromeOptions

if __name__ == '__main__':
    chrome_options = ChromeOptions()
    chrome_options.add_argument('--ignore-certificate-errors')  # 忽略無效證書的問題
    ChromeConfig.options = chrome_options
    seldom.main(browser="chrome")

4.4、支援遠端節點(Selenium Grid)

import seldom
from seldom import ChromeConfig

# 需要先下載selenium-server,然後啟動服務java -jar selenium-server-standalone-3.141.59.jar
if __name__ == '__main__': 
    ChromeConfig.command_executor = "http://127.0.0.1:4444/wd/hub"
    seldom.main(browser="chrome")

5、seldommain() 方法

main()方法是seldom執行測試的入口, 很多重要的配置都是通過這個方法完成。

import seldom

"""
path : 指定測試目錄或檔案。
browser : 指定測試瀏覽器,預設Chrome。
report : 自定義測試報告的名稱,預設格式為2020_04_04_11_55_20_result.html
title : 指定測試報告標題。
description : 指定測試報告描述。
debug : debug模式,設定為True不生成測試HTML測試,預設為False。
rerun : 設定失敗重新執行次數,預設為 0。
save_last_run : 設定只儲存最後一次的結果,預設為False。
timeout : 設定超時時間,預設10秒
xmlrunner: 設定為 True ,生成XML格式的報告。不支援同時生成HTML和 XML 兩種格式的報告。
"""

if __name__ == '__main__':

    seldom.main(path="./",
              browser="chrome",
              report=None,
              title="百度測試用例",
              description="測試環境:chrome",
              debug=False,
              rerun=0,
              save_last_run=False,
              timeout=None,
              xmlrunner=False
    )