腦洞
最近腦洞有點兒大,最開始是想給自己的測試平台新增手動執行用例的功能,又覺得沒有乙個很好的展示,所以想著要實時展示手機上的內容,輸出到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...