Growl 通知テストランナー

[追記1 17:45]

@IanMLewis が pynotify に対応してくれてます。仕事はやい。
次は id:nullpobugSnarl に対応してくれるのを期待。

[追記2 22:15]

上の追記1で期待アゲしたように、id:nullpobugSnarl 対応してくれましたよ!

------------

BPStudy#29 にて id:t-wada さんが TDD のデモされてる際、autotest の結果を Growl 通知させてました。お、これいいなーと思ってたんですが、autotest で Growl 通知って Ruby とかじゃ普通な感じなんですかね?


Python でも autotest 的なものがないものかと思っていたところ、id:nullpobugModipyd いいよー、とオススメしてくれました。


Modipyd便利ですな - 偏った言語信者の垂れ流し


ならばと思い、Growl 通知する簡単なテストランナーを作ってみましたよ。既に誰かが作ってるんでしょうけど。


https://ae35@bitbucket.org/ae35/growltestrunner/

growlnotify のインストール

こいつを使えばコマンドライン上から Growl 通知させることができます。Growl の .dmg に入ってますので、インストールしちゃって下さい。


以下のように打って、Growl 通知されればOK

  $ growlnotify -n "Growl Text Test Runner" -m test

Growl 設定

一回でも *growlnotiry -n "Growl Text Test Runner"* を実行していれば、「システム環境設定」->「Growl」->「アプリケーション」一覧に "Growl Text Test Runner" というアプリが登録されていると思います。



お好みの表示スタイルを選びます。自分は Music Video にしてます。



表示スタイルの優先度「緊急」を赤、「重要でない」を緑なんかにしてやるといいかもしれません。あとの設定はお好みで。


超簡単な説明

unittest.TextTestRunner を継承して、テスト結果を growlnotify に投げてるだけです。アイコンを作るほうが時間がかかってるんですが、誰かカッコいいアイコン作ってくれませんか…


growltestrunner パッケージを Python パスが通ってる場所に置いて下さい。

使い方

TextTestRunner の代わりに使ってみたり

  #!/usr/bin/env python
  # -*- coding:utf-8 -*-
  import unittest

  from growltestrunner import GrowlTestRunner

  class DemoTest(unittest.TestCase):
      def test_true(self):
          self.assert_(True)

      def test_false(self):
          self.assert_(False)

  if __name__ == '__main__':
      suite = unittest.TestLoader().loadTestsFromTestCase(DemoTest)
      GrowlTestRunner().run(suite)


Modipyd で使ってみたり

  $ pyautotest -r growltestrunner.GrowlTestRunner


テストが実行されるたびに Growl 通知されます。