けんちゃんくんさんのWeb日記
2016/6/6

PythonのテスティングフレームワークとDjangoでテストメソッド単位での実行

Pythonのテスティングフレームワークは、unittestとnoseっていう全部入りのやつが2つあって、それぞれdjangoと組み合わせて使うことができる。

今のプロジェクトではdjango-noseを使っているんだけど、これのテストメソッド単位ので実行方法がわからなくて混乱してた。(ぐぐったらすぐでてくるんだけど…)

Djangoでは、Railsでいうrailsコマンドみたいなエントリポイントはmanage.pyってやつになっている。

たとえば、全部のテスト実行はpython manage.py testとかでできるんだけど、個別実行しようとすると、テスティングフレームワークによって指定の仕方がかわる

unittestの場合はヘルプの通り . でぜんぶ 繋いでゆくと実行できる。

$ python manage.py test -h

Usage: manage.py test [options] [path.to.modulename|path.to.modulename.TestCase|path.to.modulename.TestCase.test_method]...

一方でdjango-noseのときはこれでは駄目で以下のようにテストクラス名の前をコロン : にしないとだめなのであった。

$ python manage.py test path.to.modulename:TestCase.test_method

ちょっとバージョンが古いというのもあるだろうけど、上のtestunitのような指定をしてもエラーにならずにテストケースが0で実行されるというのがちょっとよくわからなくて混乱していた。

created_at: 2016-06-07 00:55:35 +0900
updated_at: 2020-03-22 08:23:14 +0900