nose で 標準出力の確認

昨日 XMLTestRunnerで標準出力を結果に出すやつを書いたら、@aodag 先生から、こんな指摘をもらった。

@aodag 「なんで自分XMLTestRunnerなんて使ってん? noseならオプションで標準出力の制御できんのに。」

という事で、使った事のある noseのオプションの覚え書き。

標準出力の表示(-s or --nocapture)

$ nosetests -s -v -w apps
  • これで print文で出力した内容が結果として表示される。
  • -v と -w とかはググれば出てくるので説明割愛

一緒にXUnit系のXMLも吐き出したい (--with-xunit)

$ nosetests --with-xunit -s -v -w apps
  • カレントディレクトリに「nosetests.xml」というXMLファイルができる。

XMLファイルの吐き出し場所と名前変えたいし ><(--xunit-file=FILE)

$ nosetests --with-xunit --xunit-file=result/hoge.xml -s -v -w apps
  • 「result」ディレクトリに「hoge.xml」というファイルで保存される。

カバレッジもとりたいし! (--with-coverage)

$ nosetests --with-coverage --cover-erase --with-xunit --xunit-file=result/hoge.xml -s -v -w apps
  • 実行するとカレントディレクトリに、カバレッジを収集した結果が「.coverage」というファイルできる。
  • 「--cover-erase」は実行前に「前回収集した結果」があれば予め消して、再収集してくれるらしい。

なんかパスの通ってる全部のパッケージのカバレッジを収集しちゃうよ! (--cover-package)

$ nosetests --with-coverage --cover-erase --cover-package=hoge --with-xunit --xunit-file=result/hoge.xml -s -v -w apps
  • これで「hoge」パッケージのみのカバレッジを収集するようになる。

coverageの結果をJenkins用にXMLにするには?

$ nosetests --with-coverage --cover-erase --cover-package=hoge --with-xunit --xunit-file=result/hoge.xml -s -v -w apps
#nosetestsコマンドの直後にcoverageコマンドを叩く
$ coverage xml
  • カレントディレクトリに「coverage.xml」が生成される

noseはオプションが色々あって覚えるの大変だけど、細かく制御できるのでいいですね。