У меня есть скрипт 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 плохо ладят друг с другом?