2012-05-10 3 views
2

В настоящее время мы с коллегами предпринимаем шаги для автоматизации тестирования эмбриональной кодовой базы python, но у нас возникли проблемы с настройкой среды &. Любая помощь приветствуется, поскольку мы не делали этого раньше с Python (и это выглядит a bit... fractured).Python-тестирование/интеграция TeamCity/правильное управление пакетами

Требование:

  • тесты являются выполняемым с помощью сценария (Nose выглядит довольно хорошо)
  • Она работает на окна машин
  • Это работоспособное через TeamCity, а также стандартные машины для разработчиков. Хорошая отчетность/интеграция TeamCity - это бонус.
  • Мы должны иметь возможность вызывать скрипты и получать правильные повторяющиеся результаты на нескольких машинах.
  • Все требования к зависимостям/пакетам выполняются простым, повторяемым образом (мы делаем это с помощью нашей основной кодовой базы с использованием ruby ​​& bundler и пытаемся повторить трюк с помощью python). Если людям нужно вручную устанавливать яйца/используя easy_install и т. Д., Это будет адский. Вы должны просто вызвать сценарий, в котором говорится: «Пожалуйста, убедитесь, что эти зависимости учтены, а затем запустите наши тесты».

В идеале рабочий процесс должен работать, как это (не обращая внимания, как мы устанавливаем/получить питона на данный момент):

  • машина для Windows синхронизирует до нашей SCM
  • Machine запускает скрипт для того, чтобы все зависимости питона (Стройные и т.д.) учитываются
  • машина способна вызвать скрипт, который запускает нос или какой-либо другой тест бегун
  • скрипт возвращает значение, указывающее не удалось ли построить

Бонусные очки вопрос:

Мы готовы установить питона на каждом Dev машине/построить агент, а не проверять его в систему управления версиями, хотя было бы неплохо, если бы мы могли бы просто проверить его в и забыть об этом. Нашей лучшей ставкой на этом фронте пока является проверка каталога установки python в SCM вместе с pythonxx.dll, найденным в Windows/System32, но я не уверен, что это ошибочный подход.

Мы обнаружили Movable Python и Portable Python. Любая идея, какой лучший подход? Как я уже сказал, мы готовы просто укусить пулю и установить python на каждой машине с использованием .msi, если это небезопасно.

Cheers!

ответ

0

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

В конце концов, мы:

  • Добавлено PortablePython 2,7 СКМ. Это работает только (tm).
  • Добавлен curl в SCM
  • Создал файл .bat в Windows, который вызывает завиток и сбрасывает и устанавливает инструменты настройки python. Затем мы устанавливаем pip через установочные инструменты (meta packaging ahoy). Затем Pip запускается против файла требований. Файл требований к приложению содержит, помимо прочего, нос (тестовый бегун python) и teamcity-нос (интеграция CI для TeamCity для носа).

Затем мы вызываем тестовый бегун, который автоматически выдерживал наши испытания без каких-либо хлопот. Неплохо!

Также будет отправлен в virtualenv.

Редактировать (N лет в будущее):

Пип поставляется в стандартной комплектации в Python 2.7.9 и за ее пределами. Самый простой способ сделать что-то в эти дни (IMO) что-то вроде:

  1. использования пипа из коробки
  2. установить virtualenv
  3. создать virtualenv для проекта & активировать его
  4. установкой зависимостей с использованием пипа (к сожалению, иногда приходится отказываться от easy_install)
  5. дискотека.

Кроме того, не используйте портативный питон, если он вам не нужен. Очень жаль, что мы не согласились на это.

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