2013年12月18日水曜日

pythonで標準出力(print)のテスト

簡単なのはdoctestでやれって感じですが。

StringIOを使用すればいけるらしい。
documentはこの辺り。
http://docs.python.jp/2.7/library/stringio.html

サンプルは以下の通り。

import unittest 
import StringIO 
import sys

class Hello: 
    @classmethod 
    def say(cls): 
        print "test",

    @classmethod
    def world(cls):
        print "World"
    
class TestHello(unittest.TestCase): 
    def setUp(self): 
        dumout = StringIO.StringIO() 
        self.sysout = sys.stdout 
        sys.stdout = dumout

    def testSay(self):
        Hello.say()
        sys.stdout.seek(0)
        self.assertEqual("test",sys.stdout.getvalue())

    def testWorld(self):
        Hello.world()
        sys.stdout.seek(0)
        self.assertEqual("World\n",sys.stdout.getvalue())

    def tearDown(self):
        sys.stdout = self.sysout

if __name__ == "__main__": 
    unittest.main()

0 件のコメント:

コメントを投稿