
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 などでも同様にテストメタデータの収集が可能です。