同時連接多臺手機,使用appium實現app自動化測試

2021-01-08 檸檬軟體測試

同時連接多臺手機,使用appium實現app自動化測試

使用appium可以實現app自動化測試,我們之前是連接一臺手機去運行,如何同時連接多臺手機呢?

很多人可能想到的是多線程(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

二:Base Driver的改寫

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的改寫

conftest是比較關鍵的一部,因為它會調用BaseDriver()類中的base_driver()方法,以往我們的conftest是這樣定義的:

但是現在不同了,這個basedriver()函數中必須傳入一個device的實參,這個實參是從哪裡獲得的?

pytest的fixture為我們提供了一種參數化的操作,fixture可以帶入參數params,依賴於這個fixture的一套測試會根據參數的不同運行多次,而被裝飾函數中通過特殊的request對象來訪問每個參數:request.param訪問的是列表中的每個元素。

四:alllure的使用

allure可以設置不同的特性:

allure.feature(功能點)

allure.story(子功能點)

with allure.step(步驟)

allure.attach(附件)等

結合pytest,一個收集測試用例,一個生成測試報告,現在通過allure在測試用例中給測試報告增加一些特性。

啟動多個appium-server

之前有想過python代碼執行appium命令的形式去自動啟動appium服務,但通過npm或cnpm安裝appium命令行都有報錯,只能手動啟動。很簡單,打開兩個appium客戶端,一個設置埠為4723,一個4726,啟動即可。

五:配置jenkins任務

這方面的內容不做過多介紹,只看下構建和構建後的操作,其中allure-results是pytest運行測試用例生成的xml報告所在的目錄,jenkins上的Allure Commandline插件會自動解析xml,生成對應的html報告。

六:allure測試報告

十分美觀吧,右上角的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"]),要想真正做到多臺手機同時運行,就要用到多線程。

相關焦點

  • Appium自動化測試環境搭建
    >」進行關注,微信公眾號TestMadman前言Appium是一個開源的自動化測試框架,支持跨平臺,支持多種程式語言,可用於原生,混合和移動web應用程式,使用webdriver驅動ios,android應用程式、那麼為了學習app自動化測試首要任務肯定就是搭建測試開發環境,
  • RobotFramework +appium實現Android自動化
    環境準備1、已安裝python37版本(SDK、JDK均已安裝完成,且環境變量都配置好了)2、已安裝robot framework3、已安裝安卓模擬器(本文使用夜神模擬器)4、安裝appium(下載地址
  • appium混合app自動化測試實現——基於python語言
    現在混合app在非常常見,即一個app不僅僅含有原生的部分,還嵌入了h5網頁。最近用appium框架實現了對安卓混合app的測試,從原生切換到h5網頁,必須切換到相應的webview,踩了太多的坑,總結了一些經驗:要切換到webview,測試app一定是要打開debug模式的(Android開發人員在測試包中開啟Webview的debug模式就可以了)chormedriver版本一定要和手機的chorme版本對應。
  • 2020,6招玩轉 Appium 自動化測試
    Appium是個什麼鬼Appium是一個移動端的自動化框架,可用於測試原生應用,移動網頁應用和混合型應用,且是跨平臺的。可用於ios和Android以及firefox的作業系統。.zip 是.app的壓縮文件,當然你也可以直接用XXX.app (xcode編譯項目,Products目錄下有XXX.app)common 裡包含著測試公用的.rb文件gemfile 所需的gem包spec 文件包含所有模塊的測試rb文件模擬器運行項目
  • 常用移動端(Android)自動化測試工具——Appium
    自動化測試自動化測試大家都有所了解,近十年來,自動化測試這項技能也一直是軟體測試從業者想要掌握的一項技能,根據有關調研顯示,希望掌握自動化測試技能的人十年來都約佔七成Android自動化測試Android自動化測試簡述自動化測試內容Android可以通過自動化框架或雲測試平臺進行自動化測試,測試內容包括以下幾個方面兼容性測試:安裝、啟動、卸載功能測試:手勢操作、功能驗證穩定性測試:app 是否容易出現閃退等現象
  • 公司 APP 內嵌騰訊 X5 內核 webview,如何使用 appium 進行測試?
    appium 做自動化測試,測試公司的 app。app 中有混合頁面,一開始以為是使用的 Android 手機原生 webview。查看手機的 webview 版本,與 uc-devtools 獲取到的 webview 版本不一致。
  • Appium Python自動化測試環境搭建
    1、Appium安裝使用Appium,selenium是一定要安裝的,python安裝完成後會自帶pip工具,不過pip工具也需要在環境變量中path路徑配置一下(安裝OK後在CMD中輸入 pip --version查看是否安裝成功);作業系統WIN7/WIN10都行,其他沒試;
  • 史上最全 Appium 自動化測試從基礎到框架實戰精華學習筆記(一)
    對測試人來說,Appium 是非常重要的一個開源跨平臺自動化測試工具,它允許測試人員在不同的平臺(iOS、android 等)使用同一套 API 來寫自動化測試腳本,這樣可大幅提升代碼復用率和工作效率。
  • app自動化測試,怎麼從零搭建appium
    不少軟體測試想進階到自動化測試,沒有前人知道,只能像個無頭的蒼蠅,到處亂轉,根本不知道從何處下手特別是自學路上碰到需要安裝什麼程序、工具的時候,一個報錯就需要在百度上查個半天,這麼浪費時間的事情,它河裡嗎?
  • 乾貨|手把手教你做app自動化測試
    什麼是App自動化?為什麼要做App自動化?App自動化是指給 Android或iOS上的軟體應用程式做的自動化測試。技術框架1、自動化學習過程自動化測試環境的部署-->自動化測試腳本開發能力--->自動化測試框架研發--->手機自動化持續集成2、andorid
  • Appium自身非必現bug影響自動化測試正常運行?Try-Catch幫您解決
    在進行軟體UI自動化測試的時候,經常會出現非被測軟體bug導致的測試執行失敗,常見原因包括:測試腳本的問題、網絡問題、產品UI的變更等等。還有一種情況是測試工具自身的bug,特別是偶現的bug並且開源的自動化測試工具還沒有修復該bug的時候,我們關心的是如何繞過這個已知bug繼續使用appium進行其他場景的自動化測試,本文通過一個實例進行分析,分兩步闡述一、第一步-使用appium測試抖音軟體目標使用appium進行抖音主頁的自動化測試,發現導致腳本執行失敗的非必現appium自身的bug
  • App自動化測試 | Android WebView測試
    混合應用中包含 Web 視圖的應用,在 App自動化測試
  • 我花了兩周時間,為了體驗appium進行多設備的兼容性測試
    這些兼容性測試如果單純靠人工進行的話,不僅測試人員會覺得枯燥無味,而且浪費時間和精力,花大把的時間去避免那千分之一的可能存在的錯誤。解決方法:利用appium進行多設備自動化測試本文主要介紹通過appium同時啟動多設備(多設備啟動後,就可以進行多設備的自動化腳本測試了)。
  • Appium的安裝、配置和操作app實例(一)
    1.Appium的安裝和介紹Appium是一個開源測試自動化框架,可用於原生,混合和移動Web應用程式測試。 它使用WebDriver協議驅動iOS,Android和Windows應用程式。http://appium.io/ appium官網appium各平臺包的下載地址: appium/appium-desktop下載自己平臺的安裝包,一路next安裝完成之後點擊圖標開啟了appium
  • 使用mitmproxy + appium + python 全自動抓取公眾號文章
    先使用mitmproxy代理抓微信公眾號歷史文章列表實現思路:在電腦上安裝 mitmproxy代理,手機和電腦連同一wifi,手機配置當前電腦為代理伺服器,然後手動查看公眾號歷史文章列表,這樣電腦上就可以獲得列表,然後再根據列表中的詳情url拿到公眾號文章詳情。
  • 「appium」appium自動化入門之環境搭建(上)
    第 1 章 環境搭建 1.1 android-sdk 環境前言appium可以說是做app ==適用最廣泛== 的一個自動化框架,它的主要優勢是==支持android下載 android-sdk,這個是做 android 測試和開發的必備環境 2.
  • 軟體測試你還差這個——APP自動化測試抓元素利器
    APP自動化測試抓元素利器 --weditor一.前言Android sdk裡面自帶的uiautomatorviewer.bat可以查看手機app上的元素,但是不太好用,頻繁報錯.使用appium inspecter啟動過於繁瑣
  • Python+Appium實現APP自動化測試
    >點擊下載按鈕會到GitHub的下載頁面,選擇對應平臺下載安裝完成後,啟動Appium,host和port默認的即可,然後設置Android SDk和Java JDK 然後點下邊那個保存並重啟的按鈕,然後點第一個Start Server按鈕,將會看到二、真機測試
  • 使用python爬取抖音app視頻
    抓包工具:mitmproxyapp自動化工具:appiummitmproxy對手機app抓包獲取我們想要的內容2、利用appium自動化測試工具,驅動app模擬人的動作(滑動、點擊等)自動化測試工具來解決。
  • Appium簡介及環境搭建(Python)
    Appium優勢:(1)可以跨平臺同時支持android、ios;(2)支持多種語言,java、python、php、Ruby等程式語言;(3)參考文檔較多,如果有web自動化測試的經驗上手比較快。Appium架構原理:Appium是在手機作業系統自帶的測試框架基礎上實現的,Android和iOS的系統上使用的工具分別如下:(1)Android版本大於4.3工具為UIAutomator,UIAutomator是Android 4.3之後系統自帶的UI自動化測試工具;(2)Android版本小於等於4.3工具為Selendroid,Selendroid