Полезно ли "Monkey Runner" для тестировщиков готовить тестовые примеры непосредственно в приложениях для Android? - PullRequest
3 голосов
/ 15 марта 2011

Я прошел через «Обезьянку» по следующей ссылке http://developer.android.com/guide/topics/testing/testing_android.html В нем так много Java-кода. Я не могу понять код для создания тестовых случаев. Только для разработчиков или тестеров, чтобы тщательно протестировать приложение. Есть ли другой шаблон для создания тестовых случаев через код? Может ли кто-нибудь предложить мне примерно то же самое.

Спасибо.

Ответы [ 2 ]

8 голосов
/ 06 мая 2011

Посмотрите на мой код 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()
0 голосов
/ 17 февраля 2016

Я выучил monkeyrunner из этого небольшого руководства.http://antoine -merle.com / Знакомство с обезьяной-бегущим-инструментом-2 /

Вам не нужно использовать Java, но начинать с низкого уровня на Python.Для идеала вы можете использовать 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')

Удачи.

...