今日の振り返り

pytestとnose

pythonのテストランナにはnoseが使われることが多いようだけど、pytestはどうなんだろうって思った。
noseは僕も使ったことがあるけど、

  1. xunit形式のレポートを出力できる。
  2. coverageを呼べる。
  3. コマンドラインオプションを設定ファイルに書いておいて起動時に設定ファイルを指定できる。
  4. フックポイントが用意されていてプラグインを作れる。
  5. テストケースを所定のルールから探索して実行してくれる。
  6. テストケース探索のルールをカスタマイズできる。
  7. doctestも実行できる(実行するかどうか選ぶことができる)。

だいたいこんな機能があったと思う。
pytestもこれらは全部サポートしている。
その上、pytestはテストに失敗したときの出力内容が親切らしい。

他にもpytestにはnoseよりも優れた機能があるらしいけど、ちょっとまだ追えていない。
今日はpytestがnoseの機能をたぶん全部カバーしていることを調べたから、今後の課題はこっちかな。

nose1.1.2は1.1.3に存在するcoverageコマンド関連のオプションがない

--coverage-xml, --coverage-xml-file=FILEなどがない。
だから、カバレッジを取りたかったら

$ nosetests --with-coverage && coverage xml -o foo.xml

とかいう風に、&&でcoverageを継続実行させるような方法を取る。

僕の環境に入ったnoseは1.1.2だったので、1.1.3のドキュメントを読みながらコマンドを実行したら「そんなオプションはない」って言われたので「あれっ?」って思ったんだよね。
まあ、全然問題ないね☆

ちなみに、僕は最初noseをインストールすればcoverageはくっついてくると思っていたんだけど、別々にインストールしておかないといけなかった。

Read The Docsというものを知った

これは、sphinxのドキュメントをホスティングしてくれるサービスみたい。
"RTD"と略すんだって。

使い方としては、

  1. Read The Docs のアカウントを作る。
  2. git, mercurialのどちらかでpullできるリポジトリを用意する(GitHubとかBitbucketでいいんだろうね)。
  3. Read The Docs の管理画面からリポジトリのURLとRTDのプロジェクトを紐づける。

って感じかな。
僕は公開したいドキュメントが今のところ無いのでまだ実際に試してないです><