django-nose とは
- Python で Web 開発をする時に Django フレームワークを使うことが多い
- CI 環境として CircleCI を使うことが多い
ということで、Django のテストを CircleCI で実行することは多い。
CI でテストを回す時は
- テスト結果を JUnit XML と呼ばれる XML の形式で出力し、
- それを CircleCI などに読み込ませる
ことで、「どのテストが落ちたのか」を一覧で見られたりする。
CircleCI にも「テストメタデータ収集」として説明がある。
これによると
Django は、django-nose テストランナーを使用して設定する必要があります。
とある。
django-nose は、 Django のテスト結果を XML で出力してくれるライブラリである。
今回はこのライブラリを Django に設定する
django-nose のインストール
pipでインストールするだけでよい。
pip install django-nose
Django や Python の対応バージョンはリポジトリの README に書かれているが、 大体のバージョンに対応しているので、基本は最新版を入れておけば問題ない。
この記事執筆時の最新版は v1.4.6
である。バージョン一覧は下記ページで見られる。
django-nose を Django に読み込ませて、XMLを出力させる
テスト結果 XML を出力させるには、 Django の settings.py
を修正する必要がある。
INSTALLED_APPS
settings.py
の INSTELLED_APPS
に django_nose
を追加する。
INSTALLED_APPS = [
...
'django_nose',
...
]
TEST_RUNNER
settings.py
に TEST_RUNNER
という設定を追加し、
django_nose.NoseTestSuiteRunner
を指定する。
TEST_RUNNER = 'django_nose.NoseTestSuiteRunner'
NOSE_ARGS
settings.py
に NOSE_ARGS
で、テスト実行時の引数を指定する。
ここで、XML出力先などを指定する。
--with-xunit
を設定することで XML ファイルが出力される--xunit-file
を設定することで、XML が指定したファイルに出力される
NOSE_ARGS = [ '--with-xunit', '--xunit-file=result/unittest.xml', ]
以上
これで、テスト結果が出力された先を CircleCI に教えてあげる。 これは、最初に紹介した CircleCI のドキュメントを参考にしてください。
また、CircleCI でなくても、Jenkins などでも同様にテストメタデータの収集が可能です。