Python3-selenium自動化測試框架,結合HTMLTestRunner測試報告

Vantpy1.0

關於框架:

Vantpy框架基於Selenium+Yaml+Unittest搭建的WebUI自動化測試框架

特點:

  • 使用POM(頁面對象模式)設計,使代碼更加有邏輯性,測試腳本更加規範,後期更加容易維護以及復用性更高
  • 支持多種定位方式,包括(xpath/css/ID/text/link_text/name)
  • 框架集成了Selenium的常用定位方法,使元素定位更加方便
  • 使用HTMLTestRunner作為自動生成測試報告,報告更加美觀,更加詳細,內容更豐富
  • Logging日誌輸出,可以看到每一步做的操作
  • Yaml作為數據管理,實現代碼,數據分離,使框架的使用起來更加簡單

部署環境:

  • Python 3.6+:python.org/

使用到的package:

pip install selenium

pip install pyyaml

支持的瀏覽器及驅動:

基於Selenium支持的所有瀏覽器

browser == "Chrome"
browser == "firefox"
browser == "IE"
browser == "phantomjs"
browser == "opera"
browser == "edge"

geckodriver(Firefox):github.com/mozilla/geck

Chromedriver(Chrome):sites.google.com/a/chro

IEDriverServer(IE):selenium-release.storage.googleapis.com

operadriver(Opera):github.com/operasoftwar

MicrosoftWebDriver(Edge):developer.microsoft.com

定位元素方式:

class BaiduPage(BasePage):
"""
在這裡寫定位器,通過元素屬性定位元素對象
"""
search_loc =(By.XPATH,//*[@id="kw"])#定位百度文本框

def input_baidu_text(self,text):
self.send_key(self.search_loc,text)

讀取yaml數據

brwserType:
browserName : Chrome

testUrl:
URL : https://www.baidu.com

file_path = os.path.dirname(os.getcwd())
name_path = file_path + confconfig.yaml
with open(name_path, r) as f:
temp = yaml.load(f.read())

日誌輸出

2018-06-02 19:05:27,581 - INFO - 選擇的瀏覽器為: Chrome 瀏覽器
2018-06-02 19:05:27,581 - INFO - 打開的URL為: https://www.baidu.com
2018-06-02 19:05:33,511 - INFO - 啟動谷歌瀏覽器
2018-06-02 19:05:34,190 - INFO - 打開URL: https://www.baidu.com
2018-06-02 19:05:35,331 - INFO - 全屏當前窗口
2018-06-02 19:05:35,360 - INFO - 設置5秒隱式等待時間
2018-06-02 19:05:35,360 - INFO - 清空文本框內容: //*[@id="kw"]...
2018-06-02 19:05:36,524 - INFO - 輸入內容方式 by xpath: //*[@id="kw"]...
2018-06-02 19:05:36,524 - INFO - 輸入內容: selenium
2018-06-02 19:05:38,780 - INFO - 點擊元素 by xpath: //*[@id="su"]...
2018-06-02 19:05:41,358 - INFO - 頁面已截圖,截圖的路徑在項目: /screenshots路徑下

生成測試報告

def report():
if len(sys.argv) > 1:
report_name = os.path.dirname(os.getcwd()) + \report\ + sys.argv[1] + _result.html
else:
now = time.strftime("%Y-%m-%d_%H_%M_%S_")
# 需要查看每段時間的測試報告,可以這樣寫:
# report_name = os.getcwd() + \report\+now+result.html
report_name = os.path.dirname(os.getcwd()) + \report\result.html
return report_name

fp = open(report(), wb)
Runner = HTMLTestRunner(
stream=fp,
title=測試報告,
description=測試用例執行情況
)

測試報告

自動化測試報告

開源代碼:github.com/G2Bent/Vantp

推薦閱讀:

單元測試之旅:預見優秀之①——優秀基因
你們測試用例越來越多,刪不刪?
DevOps入門教程——Jenkins持續集成篇
Python---一個簡單的自動化測試框架
自動化測試

TAG:Selenium | Python | 自動化測試 |