pythonのdoctestが凄くいい。
コメントに書くと、テストが簡単に実行できる。

ただ、以下のテストを実行してみるとわかるのですが、
日本語の扱いに難有り。テスト結果としての文字列をu’\u308f’みたいに書かないといけない。
環境はpythonは2.7.1、windows7です。

# encoding: utf-8    
def doctestJapan(no):
    """
    >>> doctestJapan(0)
    u'tiro finale'
    >>> doctestJapan(1)
    こんなの絶対おかしいよ
    >>> doctestJapan(2) # わけがわからないよ
    u'\u308f\u3051\u304c\u308f\u304b\u3089\u306a\u3044\u3088'
    >>> doctestJapan(3)
    u'わけがわからないよ'
    """
    if no == 0:
        return u'tiro finale'
    elif no == 1:
        print u'こんなの絶対おかしいよ'
    elif no == 2:
        return u'わけがわからないよ'
 
if __name__ == "__main__":
    import doctest
    doctest.testmod()

こんな実行結果

**********************************************************************
File "C:\Users\xxxxxx\.vim_junk\2012\2012-02-08-071611.py", line 10, in __main__.doctestJapan
Failed example:
    doctestJapan(2)
Expected:
    u'わけがわからないよ'
Got:
    u'\u308f\u3051\u304c\u308f\u304b\u3089\u306a\u3044\u3088'
**********************************************************************
1 items had failures:
   1 of   4 in __main__.doctestJapan
***Test Failed*** 1 failures.

上記を見ると、ふつうにu’わけがわからないよ’と書いた部分はテストが通っていない。
ただ、「こんなの絶対おかしいよ」の部分は文字列をprintした結果でテストしているので、
うまくいっている。

結論:doctestで日本語を使うときは、printを指定して望みどおりに表示されているかを確認すると吉。

Pocket

Comments are closed.