做爲一個Game Developer,測試部分是必不可少,程序完成需求首先要進行S0相關的測試,這樣確保交付到策劃驗收和QA驗收時是沒有阻斷性的bug或者顯而易見代碼缺陷。那麼如何去作測試用例呢?確定不是拿着鼠標,對功能進行點點就好了,尤爲是測試即將發佈的周版本,這樣人力測試其實成本挺高的,如何將人力解放出來,那麼自動化測試就是解決這種問題的,針對每一個功能模塊寫好測試用例,直接跑測試用例就能夠了。html
Q:Airtest是什麼玩意?python
A:Airtest Project是網易遊戲內部工具團隊開發並開源的一款UI自動化測試工具,聽說曾經得到谷歌力挺。api
Q:Airtest支持哪些測試?app
A:腳本錄製測試,基於圖形圖像識別,寫測試用例測試(python腳本)編輯器
Q:Airtest使用起來簡單嗎?函數
A:零門檻,入門只要5分鐘,接下來,教你一步步搭建工具
如何搭建Airtest自動化測試環境
1,安裝Python環境,安裝後將python加入環境變量學習
2,安裝pip(到python.exe文件目錄下執行Python setup.py install)測試
3,安裝poco(pip install poco)ui
4,安裝pocoui(pip install pocoui)
5,安裝pip install opencv-contrib-python==3.2.0.7 若是失敗先執行卸載pip uninstall opencv-contrib-python而後再從新執行安裝,若是pip版本太低能夠升級:pip install opencv-contrib-python也可不升級直接執行安裝
到這一步,表示已安裝成功了!
6,安裝airtest: pip install airtest
7,下載AirtestIDE,直接解壓雙擊兼容模式啓動.bat便可運行,下載地址:http://airtest.netease.com/
好了,到此測試環境已經搭建完成!啓動下,看看Airtest IDE的界面
好了,接下來咱們來一塊兒學習如何使用這個IDE,咱們要對接的Unity自動化測試,那麼請移步這裏:https://poco.readthedocs.io/en/latest/source/doc/integration.html#unity3d
只須要4步就搞定Poco SDK 的接入,那麼接下來咱們新建一個簡單的Unity工程,將SDK放入工程下,搭建一個簡易的界面,
怎樣使用Poco呢?只須要在GameObject處於Active的實例下掛載PocoManager.cs便可。
那麼運行遊戲,你會發現Poco開啓了一個服務端口,這個服務是幹什麼的,能夠提供[RPC]函數的遠程調用,主要功能是dump場景中的Unity層次試圖下的節點的。
Airtest 如何和Unity協同使用呢?
在Editor模式下只須要把Game窗口嵌入到Airtest IDE便可,來看下怎麼內嵌到IDE中,很簡單的,點擊選定窗口,款選Game視圖便可。
來了,老弟,內嵌Airtest IDE成功
獲取unity下的層次試圖:
在Poco輔助框選擇項目開發引擎Unity便可,支持Unity,UE,Cocos,Android原生,iOS原生開發,QT等。層次試圖下的節點已經獲取了,我該怎麼和UI交互呢,彆着急,他來了,下面就是
# -*- encoding=utf8 -*- __author__ = "acer" from airtest.core.api import * from airtest.cli.parser import cli_setup from poco.drivers.unity3d import UnityPoco if not cli_setup(): auto_setup(__file__, logdir="G:/ATest/PocoUnity/log", devices=[ "Windows:///2360856", ], project_root="G:/ATest/PocoUnity") # focus_rect:[左邊框寬度,上邊框寬度,右邊框寬度,下邊框寬度] device().focus_rect = [20, 20, 0,0] # script content print("start...") poco = UnityPoco() class pUnit: def __init__(self,_btn): #print("init") self.btn = _btn '''單次點擊調用''' def testBtnClick(self): self.btn.click() '''重複點擊調用''' def testBtnRepeatedClick(self): count = 0 while True: self.btn.click() time.sleep(1.0) count += 1 if count > 6: break print("count:",count) print('輸入帳號,密碼,模擬登陸...') poco("ipt_user").set_text('wuzhang') poco("ipt_passwd").set_text('123456') assert poco("btn_login").child("Text").get_text() == "登陸", "Login" poco("btn_login").click() time.sleep(1) print(poco("tips").get_text()) btn_start = poco("btn_start") if btn_start.exists(): x = pUnit(btn_start) x.testBtnClick() x.testBtnRepeatedClick() print("over")
那咱們運行下看下效果,有點火燒眉毛了,心裏也有點小激動了......
若是不想寫代碼,但是錄製腳本,而後就能按照咱們錄製的腳本運行,這個比較簡單,此處再也不演示了,下面你關心的多是真機測試了,真機測試也很簡單使用數據線鏈接你的手機在開發者模式中打開容許調試,在IDE上點擊刷新ADB,其實就是執行了:adb devices,而後就看到了個人手機,點擊connect即連上了咱們的安卓設備。
連上手機了,手機下運行和編輯器一致,這裏就再也不上傳截圖了,到此簡單的環境搭建和測試已經OK了,若是有更多的需求好比拖拽,滑動Scrollview等複雜點的交互能夠查詢官方提供的demo和API,這只是一個簡易的自動化環境測試,咱們能夠本身寫一個自動啓動app,逐個調用各個模塊的測試用例,好比:登陸模塊,點金玩家玩家頭像獲取信息,定時作任務等等。
參考資料:
http://airtest.netease.com/changelog.html
http://airtest.netease.com/tutorial/Tutorial.html
https://poco.readthedocs.io/en/latest/source/doc/integration.html#unity3d
原文出處:https://www.cnblogs.com/wuzhang/p/wuzhang20200322.html