pytest allure测试报告_Appium+pytest+allure+jenkins如何实现多台手机连接
很多人可能想到的是多線程(threading)。
今天分享一種比多線程更簡單的方法,雖然不是多臺手機同時運行,但可以連接多臺手機依次運行。
大致的運行方式是:001號測試用例:A手機,B手機...,002號測試用例:A手機,B手機...
環境準備
◆ appium的安裝:adt,nodejs,appium的python庫,appium server◆ pytest的安裝:pytest◆ allure的安裝:allure的python庫pytest-allure-adaptor◆ jenkins上插件的安裝 ◆ jenkins的安裝:windows上的安裝◆ 手機/模擬器:華為榮耀暢玩5C,夜神模擬器配置改寫,以上課所寫的前程貸的自動化框架為主。
框架的分層如下:
在上述框架中,我們的配置信息存在Caps目錄下的Caps.yaml中。
譬如這樣:
這只是一臺手機的設備信息和連接信息,
如果我們需要兩臺甚至多臺,就需要把它們的信息都寫入yaml文件,
每個手機的信息用一個列表描述。
注意:
01上述yaml文件中多了deviceDesc和udid,前者是我們用來區分不同的手機,后者是appium用來區分不同的手機
02 給不同的手機設置不同的端口,榮耀暢玩5C使用的是4723,夜神模擬器使用的是4726
BaseDriver是公共的driver類,通過讀取yaml配置信息,生成并返回driver對象。
其基本的傳遞路徑是:
Caps.yaml-->BaseDriver.py-->conftest:設置不同的fixture,返回driver,
因此它是溝通配置信息和conftest的橋梁,
既然配置信息變了,相應的BaseDriver的讀取也要改變,
改寫前的BaseDriver.py,具體代碼如下:
由于是多臺手機,每個手機的通過配置信息里的deviceDesc來區分,
BaseDriver類中的base_driver函數需要設置一個變量device來區別不同的手機,
這個device是我們傳入的,如果我們傳入的是device="YeShen",還是用之前的代碼的話,得到將是全部的信息。
有必要通過if判斷篩選下,只取對應device的配置信息。
conftest是比較關鍵的一部,
因為它會調用BaseDriver()類中的base_driver()方法,
以往我們的conftest是這樣定義的:
但是現在不同了,這個basedriver()函數中必須傳入一個device的實參,
這個實參是從哪里獲得的?
pytest的fixture為我們提供了一種參數化的操作,
fixture可以帶入參數params,依賴于這個fixture的一套測試會根據參數的不同運行多次,
而被裝飾函數中通過特殊的request對象來訪問每個參數:request.param訪問的是列表中的每個元素
allure可以設置不同的特性:
◆ allure.feature(功能點)◆ allure.story(子功能點)◆ with allure.step(步驟)◆ allure.attach(附件)等結合pytest,一個收集測試用例,一個生成測試報告。
現在通過allure在測試用例中給測試報告增加一些特性。
啟動多個appium-server
之前有想過python代碼執行appium命令的形式去自動啟動appium服務,
但通過npm或cnpm安裝appium命令行都有報錯,只能手動啟動。
很簡單,打開兩個appium客戶端,一個設置端口為4723,一個4726,啟動即可。
這方面的內容不做過多介紹,只看下構建和構建后的操作,
其中allure-results是pytest運行測試用例生成的xml報告所在的目錄,
jenkins上的Allure Commandline插件會自動解析xml,生成對應的html報告
十分美觀吧,右上角的TREND顯示的是多次運行結果的趨勢,
第7次到第19次都是5個fail,第20次6個fail
除此之外,allure報告的Behaviors功能中可以看到每個測試用例對應的測試步驟、功能、子功能等,
測試報告還會標記出同一個測試用例是哪臺手機執行的,
如下圖:
TestLogin.test_login_errorPasswd[Honor_5C]
代表的執行機是榮耀暢玩5C。
jenkins面板也展示了多次運行結果的趨勢。
pytest中fixture的參數化雖然能夠實現多臺手機同時連接,但是運行并不是同時的。
因為request.param讀取參數列表是遍歷讀取的,
所以造成了一個測試用例,手機A先執行,手機B后執行(假設params=["手機A", "手機B"]),
要想真正做到多臺手機同時運行,就要用到多線程。
本文轉載自檸檬班社區,未經允許謝絕轉載
http://www.lemfix.com/topics/83
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的pytest allure测试报告_Appium+pytest+allure+jenkins如何实现多台手机连接的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 我不想换发型可是妈妈强逼我换怎么办?
- 下一篇: python定义字典列表_[Python