【问题标题】:Is "Monkey Runner" useful for testers to prepare test cases directly in Android applications?“Monkey Runner”对测试人员直接在 Android 应用程序中准备测试用例有用吗?
【发布时间】:2011-03-15 06:39:53
【问题描述】:

我已经浏览了以下链接的“Monkey Runner” http://developer.android.com/guide/topics/testing/testing_android.html 它有很多Java代码。我无法理解创建测试用例的代码。是只供开发人员还是测试人员彻底测试应用程序。还有其他通过代码创建测试用例的模式吗?任何人都可以建议我。

谢谢。

【问题讨论】:

    标签: android unit-testing testing bug-tracking monkeyrunner


    【解决方案1】:

    看看我的 MonkeyRunner 代码。应该比Java更容易。更改保存文件的路径,并替换电话号码。我只有1个问题。无法挂断电话。

    #! /usr/bin/env monkeyrunner
        '''
        Created on Apr 1, 2011
    
        @author: sj
        '''
    
        import sys
    
        # import the MonkeyRunners modules used by this program
        from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice, MonkeyImage
    
    
    
    
    
    
    
        def browse(d):
            d.broadcastIntent("http://www.google.com/", "ACTION_MAIN")
            #d.startActivity(component="com.android.browser/.BrowserActivity")
    
        def debug(device):
            print" package:%s" % device.getProperty('am.current.package')
            print" action:%s" % device.getProperty('am.current.action')
            print" comp.class:%s" % device.getProperty('am.current.comp.class')
            print" comp.package:%s" % device.getProperty('am.current.comp.package')
            print device.getProperty('display.width'), device.getProperty('display.height')
    
        def screenshot(d):
            MonkeyRunner.sleep(1.0)
            result = d.takeSnapshot()
            MonkeyRunner.sleep(1.0)
            result.writeToFile('/yourPath/device.png', 'png')  
    
        def call(d):
    
            d.startActivity(component="com.android.contacts/.TwelveKeyDialer")
            print "Start Activity"
    
            MonkeyRunner.sleep(1.0)
    
            d.type("+XXXXXXXX")
    
            # Call number.
            print "Call"
            d.touch(190, 800, 'DOWN_AND_UP');
            # not working device.press('KEYCODE_CALL', 'DOWN_AND_UP')
    
            print "Wait 10 sec"
    
            MonkeyRunner.sleep(10.0)
    
            # HangUp Call
            #device.press('KEYCODE_ENDCALL', 'DOWN_AND_UP')
    
            print "Hang Up"
            #x1 = 215
            #x2 = 230
            #y = 700
            #start = (x1,y)
            #end = (x2, y)
            #steps = 2
            #pause = 0.2
            #device.drag(start, end, pause, steps)
    
            d.startActivity(component="com.android.phone/.InCallScreen")
            #device.touch(230, 700, "DOWN");
            MonkeyRunner.sleep(1.0)
            #device.touch(230, 700, "UP");
    
            d.touch(230, 700, 'DOWN_AND_UP');
            #device.touch(270, 650, 'DOWN_AND_UP');
    
    
        def main():
            print "Start"
    
            # Connect to the current device returning the MonkeyDevice object
            device = MonkeyRunner.waitForConnection()
    
            #MonkeyRunner.alert("Starting Activity", "monkeyrunner", "OK")
    
            if not device:
                print "Couldn't get connection"
                sys.exit()
    
            print "Found device"
    
            #call(device)
            browse(device)
            debug(device)
            screenshot(device)
    
    
            device.press('KEYCODE_ENDCALL', 'DOWN_AND_UP')
    
            MonkeyRunner.sleep(10.0)
    
    
    
    
        if __name__ == '__main__':
            main()
    

    【讨论】:

      【解决方案2】:

      我通过这个小指南学习了monkeyrunner。 http://antoine-merle.com/introduction-to-the-monkey-runner-tool-2/

      您不必使用 java,但可以从 python 开始。对于 ide,您可以使用 pycharm,这将为您在 python 中创建类时提供更好的开始。

      从@Boris_Ivanov 显示的代码来看,这是一个好的开始,但我会删除“MonkeyImage”——因为您不使用它,如果需要使用它,还将测试用例推送到不同的文件中会增加速度。

      有一点要谈:

          Connect to the current device returning the MonkeyDevice object
          device = MonkeyRunner.waitForConnection()
          #MonkeyRunner.alert("Starting Activity", "monkeyrunner", "OK")
      

      我正在使用这样的东西,它确实可以一直工作:

          device = MonkeyRunner.waitForConnection(60)
          if not device:
              raise Exception('Can not connect to device')
      

      祝你好运。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-04-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-02-05
        相关资源
        最近更新 更多