Почему MonkeyRunner терпит неудачу при вызове с использованием TeamCity - PullRequest
0 голосов
/ 06 сентября 2011

У меня есть скрипт monkeyrunner, который подключается к устройству Android и развертывает APK на нем.

serial = '12345JKL'
device = MonkeyRunner.waitForConnection(deviceId=serial)
device.installPackage(path_to_apk)

Это работает безупречно, когда я выполняю сценарий с помощью командной оболочки Windows.

"C:\dev\android\tools\monkeyrunner.bat" "C:\dev\my_script.py" -psome_parameter

Проблема в том, что я хочу, чтобы my_script.py выполнялся конфигурацией сборки TeamCity (Enterprise 6.0.3) на том же ПК: это не удалось. Пожалуйста, найдите трассировку стека здесь: http://pastebin.com/CjWy95c3

Сначала я подумал, что ТС работает с параметрами скрипта. Но команда из журнала сборки ТС

[00:55:12]: Starting: "C:\dev\android\tools\monkeyrunner.bat" "C:\dev\my_script.py" -psome_parameter
in directory: C:\some_dir

был таким же, как в командной оболочке, и, соответственно, сценарий мог подключаться к устройству и работал нормально, когда я скопировал команду в командную оболочку, тогда как C:\some_dir был моим текущим каталогом.

Мне не удалось воспроизвести эту ошибку за пределами TC.

Хочу подчеркнуть, что все это происходит на одном компьютере (Win 7 x64). Сценарий работает при выполнении из командной оболочки, но завершается неудачно (всегда при попытке подключиться к устройству) при запуске конфигурацией сборки TC.

Я не могу придумать причину, по которой это происходит, и был бы очень рад, если бы кто-то мог указать мне правильное направление.

Большое спасибо заранее

Редактировать: Оказывается, проблема не ограничивается MonkeyRunner.waitForConnection(), но также возникает при вызове MonkeyRunner.sleep(5). Stacktrace

Может быть, MonkeyRunner и TeamCity плохо ладят друг с другом?

Ответы [ 2 ]

0 голосов
/ 14 сентября 2011

После того, как мы с коллегой исследовали проблему в течение трех дней, мы не смогли найти источник этой проблемы.Но когда мы использовали другую машину в качестве агента сборки, проблема исчезла.Мы до сих пор не знаем, что вызвало это исключение NullPointerException.

0 голосов
/ 13 сентября 2011

Вероятно, это связано с проблемой вашего импорта.Вероятно, проблема с импортом связана с тем, что TeamCity вызывает MonkeyRunner.Я предполагаю, что это связано с тем, что текущий каталог испорчен.Попробуйте использовать

import os
os.chdir("path")

, чтобы изменить текущий каталог в верхней части скрипта .py.(Перед тем, как импортировать monkeyrunner), я бы попробовал изменить его на каталог с MonkeyRunner.

...