Monkeyrunnerによる自動化テスト


前の記事ではpythonを作成してMonkeyrunnerの消費電力テストを行うことを紹介していますが、実際にMonkeyrunnerの自動化テストでの機能はこれだけではありません.その中で、複数のシミュレータ(または本物)を接続して自動化テストを行うことができるのがMonkeyrunnerの大きなポイントです.Monkeyrunnerの作成はpythonに基づいているため、pythonについてよく知っている仲間は余裕を持って適用されます.では、簡単に紹介します.
環境説明:今回のテストは、appが異なる解像度シミュレータのインタフェース(Activity)に入るシミュレーションを自動化して各種操作(Buttonとシミュレーションスライドインタフェースをクリック)し、各シミュレータインタフェースのスクリーンショットを行う.もちろん、今回のテストアプリケーションは通信app(SMSのような)で、受信メールを送信する簡単な自動化機能コードをシミュレートします.
テストツール:Eclipse+python(2.7.0)+2つの異なるカスタム解像度シミュレータ(320 P、1080 P);
手順:
Eclipseとプラグインのインストールを実行するブロガーの別の記事では、ここでは、コード部分を直接行います.
具体的なコードは以下の通りです.
#    MonkeyRunner  
from com.android.monkeyrunner import MonkeyRunner
from com.android.monkeyrunner.easy import EasyMonkeyDevice
from com.android.monkeyrunner.easy import By
from com.android.monkeyrunner import MonkeyDevice

#         devices,          
device1=MonkeyRunner.waitForConnection(1.0,'emulator-5554')
device2=MonkeyRunner.waitForConnection(1.0,'emulator-5556')

devicelist=(device1,device2)  #           devicelist

k=0   #    ,                           

for i in range(0,len(devicelist)):  #          

#         
    if not devicelist[i]:
        print "Please connect a device to start!"
    else:
        print "Start "  
        
#    touchId,    touch  
    touchId=EasyMonkeyDevice(devicelist[i]) 
    
#    apk  
    devicelist[i].installPackage("********.apk")  
    
    MonkeyRunner.sleep(30)  #         ,                                                     ,              ,                                         ,             (  )
    
    if(k==0):  #         a    ,     png
        a='*******.png'
     else:      #         a    
         a='*******.png'
         
#  App      Activity
    devicelist[i].startActivity(component="************Activity")  
    
    MonkeyRunner.sleep(15)
#drag                   ,              
    devicelist[i].drag((700,240),(100,240),1,10)
    
    MonkeyRunner.sleep(10)
#touchId     Button   ,  Button    id ,             
    touchId.touch(MonkeyDevice.DOWN_AND_UP,By.id('id/*****'),MonkeyDevice.DOWN_AND_UP)
    MonkeyRunner.sleep(10)
    touchId.touch(By.id('id/*****'),MonkeyDevice.DOWN_AND_UP) 
    MonkeyRunner.sleep(10)
#press               ,     “back” 
    devicelist[i].press('KEYCODE_BACK', 'DOWN_AND_UP')
    MonkeyRunner.sleep(5)  
    devicelist[i].press('KEYCODE_BACK', 'DOWN_AND_UP') 
    MonkeyRunner.sleep(5)
    touchId.touch(By.id('id/*********'),MonkeyDevice.DOWN_AND_UP) 
    MonkeyRunner.sleep(5)
    
    Compose=devicelist[i].takeSnapshot()  //    Compose  ,          
    
#                “1111”
    device.type('1111')
    
#  python os ,     12345678  “test”    “5554”
#        5554  ,   5556、5558,    ,                 

    os.system('echo "sms send 12345678 test" | telnet localhost 5554')
    
#        
    Compose.writeToFile(a,'png')
     
#            ,k++             
    k=k+1

    
        
PS:pythonコードのインデント構造に注意
締めくくり:以上のコードはすべての自動化機能テストをカバーするのに十分であり、appのActivityまたはButtonをクリックして取得する方法については後述する.みんなの意見を得て、仕事をもっと面白くて効率的にしたいです!