unittest2パッケージと2.7のunittestモジュールまとめ

以前ブログに書いたparameterized testがPython2.7で実装されるという事が気になり始めたので、おもむろにPython2.7b2のWhat's Newの章を読んでみた。
すると、unittest2というパッケージが外部ライブラリとしてあるようだ。
urllib2的なノリかと思ってみたら、2.7で実装される機能のバックポートらしい。
一足先に使いたい人はeasy_installでインスコしてね!

簡単なまとめ

2.7b2の公式ドキュメントから簡単にまとめてみた。
unittest2も多分同じ感じで使えると思う。
詳細はunittest2の使い方を見てくださいませ。
http://www.voidspace.org.uk/python/articles/unittest2.shtml

また、訳が間違ってるなどあったら指摘お願いいたしまする。

  • py.testやnoseほど強力では無いがtestモジュールを検出して実行できるようになった
    • unittest.TestLoader.discoverメソッドを使う
    • ライブラリリファレンス見る限りワイルドカードを使ってるような
  • main()関数のオプション追加
    • バッファオプション
      • 標準出力に出力しないでバッファリングする。出力のタイミングはすべてのテスト完了かテスト失敗時
    • Ctrl + Cの割り込み
      • 割り込みがあった時点で完了したテストを出力して終了
        • たしか今まではKeyboardInterruptの例外が出て、これがハンドルされず落ちるというような感じだったと思う
    • failfastオプション
      • テストが失敗した時点でテスト終了
  • 対話モードでのテストの進捗の出力
    • xが失敗時、uが想定外の成功(なんか訳怪しい
  • テストのスキップ
    • ある条件でのテストをスキップするとか
      • 使いどころとしてはフィクスチャでテストデータ投入に失敗したらパスとかっぽい
  • テスト失敗時の詳細なメッセージの出力
    • assertEqual, assertFalse, assertTrueが対象
  • assertRaisesメソッドにwith文が使えるようになった
    • with self.assertRaises(expression)の後の行に例外が発生する処理を書く
  • クラスおよびモジュールレベルでのフィクスチャ追加
    • setUpModuleとかtearDownClassとか
  • cleanupメソッドの追加
    • setUpが失敗した場合に実行する関数
  • assert関数の大幅な追加・変更
    • 大杉。公式ドキュメント見て。
  • unittest.main()関数にexit引数の追加
    • main関数がFalseを返すときにはsys.exit()を実行しない
  • TestResultクラスにstartpTestRun()メソッド、stopTestRun()メソッドの追加
    • startTestRunはテスト開始後に一度だけ呼び出す。stopTestRunは終了後に一度だけ呼び出す。


ちなみに2.7はまだベータなので変更・追加される可能性はある。
その時はまた新たに差分のみを新規に起こすかここに追記します。

parametarized testは?

まだ問題があるみたいでパッケージには入ってない。
残念。

余談

unittestのファイルは分割されたらしい。
でも今まで通りimportして使えるから安心してね!
って書いてあった。
コード読んでみるか。

余談その2

unittest2の作者はIronPython in Actionの作者だそうです。