安卓自動化測試新增用例執行回放

2021-09-20 09:12:48 字數 1879 閱讀 1592

腦洞

最近腦洞有點兒大,最開始是想給自己的測試平台新增手動執行用例的功能,又覺得沒有乙個很好的展示,所以想著要實時展示手機上的內容,輸出到web頁面,但是覺得有點難啊。

想了一下,還是換個方式吧,每個case執行完畢,都可以看到實時的錄影。這樣也許可行,哈哈哈!

準備條件

基礎知識

adb大家應該很熟悉,簡單的說就是個連線手機和電腦的工具,哈哈哈,簡單粗暴。

我們常用的adb命令有:

不過這裡要講的是adb錄屏的命令~

我們連上安卓手機後, 在cmd視窗輸入命令:

這時候其實手機上的內容已經開始錄製了~

我為了偷懶,就照搬這位兄弟的部落格了~~!傳送門在此

注意

這裡的adb命令開始錄製以後,不管是否正常結束,都會儲存檔案,所以我們可以把錄製時間放長一點,到時候關閉就好了。

思路第一步用例在setup的時候,開啟錄製~

第二步用例在teardown的時候, 結束錄製~

第三步用例結束錄製以後,使用adb命令將mp4檔案拉取到本地硬碟上,供web頁面展示,或者將本地檔案放入測試報告裡作為超連結訪問。(但是此種方法不被chrome瀏覽器支援)

開始勞作

import unittest

from time import sleep

class testcase(unittest.testcase)

@classmethod

def setupclass(cls):

print("[{}]--正在執行登陸初始化操作: {}".format(datetime.now().strftime(

"%y-%m-

%d%h:%m:%s"), cls.__name__))

# 錄屏

cls.replay = subprocess.popen(r"adb shell screenrecord "

r"/sdcard/{}.mp4 --time-limit 600".format(cls.__name__),

creationflags=subprocess.create_new_console)

def test_01(self):

pass

@classmethod

def teardownclass(cls):

# 終止錄影

cls.replay.terminate()

# 這裡我的cls.conf是個配置檔案, 獲取到錄影儲存的路徑然後mp4的名字是以用例class命名的

replay_path = os.path.join(cls.conf.get_value("replay_path"), "{}.mp4".format(cls.__name__))

sleep(2)

# 這裡的pull是指從sdcard獲取檔案到本地硬碟,

subprocess.popen(r"adb pull /sdcard/{}.mp4 {}".format(cls.__name__, replay_path),

creationflags=subprocess.create_new_console)

sleep(6)

注意:

優化:應該有更好的辦法解決, 暫時還沒有考慮到更好的辦法~

暫時還沒有做

Monkey工具 安卓自動化測試

有時候我們需要對乙個軟體進行壓力測試,檢查該軟體的效能。如果是人工進行測試的話,效率會低很多,而且會比較枯燥。這時,android 中的乙個命令列工具 monkey 就可以為我們減輕很多重複而又繁瑣的工作。一 monkey 簡介至於monkey 的名字是有何而來的呢?這個沒有去怎麼考究,monkey...

安卓自動化測試 monkey 一

monkey是安卓中的乙個命令列工具,可以執行在模擬器或者是實際的裝置中,它向系統傳送為偽隨機的使用者事件流 如按鍵輸入 觸控螢幕輸入 手勢輸入等 實現對正在開發的應用程式進行壓力測試。monkey測試是一種為了測試軟體的穩定性 健壯性快速有效的方法 測試的物件僅為應用程式包,有一定的侷限性 mon...

安卓自動化Uiautomator

將d androidl androidstudio android android sdk platforms android 23下的android.jar uiautomator.jar包匯入工程 進入工作目錄執行 android create uitest project n sendmess...