Я использую teamcity-nose со следующей конфигурацией в settings.py:
TEST_RUNNER = 'django_nose.NoseTestSuiteRunner'
NOSE_ARGS = ['-v', '-s', '--rednose', '--with-selenium',]
if os.getenv('TEAMCITY_PROJECT_NAME') is not None:
# whatever special teamcity settings you might have go here
Мой шаг сборки, который выполняет тестирование, выглядит следующим образом:
. /opt/teamcity/virtualenvs/myproj/bin/activate
dropdb test_myproj-teamcity &> /dev/null # bug that is not destroying database
manage.py test
Мой проект manage.py находится на пути (я устанавливаю в bin-файл virtualenv через setup.py), поэтому вам придется добавить путь, если вы сделаете иначе.
Мне никогда не удавалось добавить покрытие всам тест, так как есть проблемы с версионностью пакета, поэтому с последним пакетом покрытия я просто добавил его на дополнительном этапе сборки:
. /opt/teamcity/virtualenvs/myproj/bin/activate
coverage html --include=myproj/*.*
cloc . --out=./htmlcov/cloc.txt
Затем вы можете добавить вкладку, которая включает html покрытия, если вы добавитеэто к вашему артефакту:
./htmlcov/
Я также добавляю вкладку со счетчиком строк, вам нужно будет установить cloc или linecounter на ваш выбор.
У меня также есть дополнительныйсоздать конфигурацию для развертывания на промежуточном сервере один раз за ночь с помощью fab (просто активируйте и fab как обычно) и дополнительную сборку для автоматической установки требований к pip в случае изменения файлов pip, добавив это в командуПравила запуска сборки "pip install -r needs.pip":
+:**.pip
И я добавляю это в мою тестовую сборку, чтобы она не запускалась, когда pip и некоторые другие файлы изменяют это значение.t выполнить тест сборки:
+:.
-:**.pip
-:*fabfile.py
-:*myproj/conf/*
+:*myproj/conf/teamcity/*