2010-12-15 5 views
0

У меня есть набор тестов App Engine, которые вызываются с помощью носа. Когда я запускаю их с терминала, каждый тест завершается успешно, и генерируются все отчеты, такие как покрытие.Можно ли запускать тесты GAE в Хадсоне?

Однако, если я пытаюсь вызвать ту же команду из Hudson, я получаю отказ от покрытия:

nose.failure.Failure.runTest (from Failure) 

Parent module 'coverage' not loaded 
-------------------- >> begin captured logging << -------------------- 
root: INFO: zipimporter('/home/wraith/dev/projects/myapp/lib/python2.5/site-packages/NoseGAE-0.1.7-py2.5.egg', '') 
root: WARNING: Could not read datastore data from /tmp/nosegae.datastore 
root: WARNING: Could not initialize images API; you are likely missing the Python "PIL" module. ImportError: No module named Image 
root: INFO: zipimporter('/home/wraith/dev/projects/myapp/lib/python2.5/site-packages/gaetestbed-0.12dev_r30-py2.5.egg', '') 
root: INFO: zipimporter('/home/wraith/dev/projects/myapp/lib/python2.5/site-packages/WebTest-1.2.1-py2.5.egg', '') 
root: INFO: zipimporter('/home/wraith/dev/projects/myapp/lib/python2.5/site-packages/setuptools-0.6c11-py2.5.egg', '') 
root: INFO: zipimporter('/home/wraith/dev/projects/myapp/lib/python2.5/site-packages/WebOb-0.9.8-py2.5.egg', '') 
root: INFO: zipimporter('/home/wraith/dev/projects/myapp/lib/python2.5/site-packages/PyYAML-3.09-py2.5-linux-x86_64.egg', '') 
root: DEBUG: Could not import "strop": Disallowed C-extension or built-in module 
--------------------- >> end captured logging << --------------------- 

Однако, если я удалить вызов покрытия, мои тесты все еще терпят неудачу.

Я успешно руководил проектами Python с Hudson. Есть ли нюанс GAE, который меня отключает?

ответ

1

Сравните среду, когда вы запускаете ее вручную, когда вы запускаете ее с помощью hudson.

Я подозреваю, что инициализация происходит в файле .profile. Это не называется, когда Хадсон порождает оболочку. Таким образом, либо вы вставляете эту инициализацию в инициализацию среды, либо вы вызываете файл .profile вручную в рамках выполненных шагов сборки.

+0

У меня нет файла .profile, просто .bashrc, чьи переменные подобраны просто отлично. Должен ли я использовать .profile вместо этого? Это системный файл, который должен быть сохранен в/etc /? –

+0

Я обнаружил, что установка явных путей в каждом шаге Хадсона разрешает любые проблемы, которые у меня есть. Например, PYTHONPATH =.: $ HOME/dev/modules/contrib: $ HOME/dev/sdks/google_appengine. Это немного громоздко, но это работает. Спасибо, что указал мне в правильном направлении. –

+0

Вы можете избежать установки переменной окружения для каждого шага сборки. Вы можете определить переменные среды в основной конфигурации Хадсона. Эта переменная среды будет установлена ​​для каждой работы. Это также можно сделать на уровне узла (я использую этот подход). Существует также плагин, который дает вам возможность устанавливать переменные на уровне задания. Делает это немного легче, чем вкладывать его в каждый шаг. :) –

Смежные вопросы