settings.py で次の構成でteamcity-noseを使用します。
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はパス上にあります(setup.pyを介してvirtualenv binにインストールします)ので、そうでない場合はパスを追加する必要があります。
パッケージのバージョン管理に問題があるため、テスト自体にカバレッジを追加することはできませんでした。そのため、最新のカバレッジ パッケージでは、追加のビルド ステップで追加しました。
. /opt/teamcity/virtualenvs/myproj/bin/activate
coverage html --include=myproj/*.*
cloc . --out=./htmlcov/cloc.txt
これをアーティファクトに追加すると、カバレッジ html を含むタブを追加できます。
./htmlcov/
また、ラインカウンターを含むタブも追加します。cloc または選択したラインカウンターをインストールする必要があります。
また、1 晩に 1 回 fab を介してステージング サーバーにデプロイするための追加のビルド構成 (通常どおりアクティブ化して fab を実行するだけ) と、pip ファイルが変更された場合に pip 要件を自動的にインストールするための追加のビルドもあり、これをトリガー ルールに追加します。 "pip install -r requirements.pip" ビルド:
+:**.pip
そして、これをテストビルドに追加して、ビルドテストに影響を与えない pip やその他のファイルが変更されたときに実行されないようにします。
+:.
-:**.pip
-:*fabfile.py
-:*myproj/conf/*
+:*myproj/conf/teamcity/*