doctestによるテスト

doctestというモジュールを使うと、docstringの中にテストコードを書くことができる。

これにより、わざわざテストクラスを書く必要がなくなる。

たとえば、こんなクラスがあるとする。

(ファイル名) rectangle.py

class Rectangle:
    def __init__(self, width, height):
        self.width = width
        self.height = height

    def area(self):
        return self.width * self.height

    def periphery(self):
        return (self.width + self.height)

このクラスにテストコードを追加するには、以下のようにする。

class Rectangle:
    def __init__(self, width, height):
        self.width = width
        self.height = height

    def area(self):
        '''
        >>> Rectangle(3, 4).area()
        12
        '''
        return self.width * self.height
    
    def periphery(self):
        '''
        >>> Rectangle(5, 6).periphery()
        22
        '''
        return (self.width + self.height) * 2

if __name__ == '__main__':
    import doctest
    doctest.testmod()

(修正内容)
1. docstring(メソッド名直後の”’〜”’で囲まれた文字列)の中に、「>>> Pythonの式」を書き、
2. その直後に期待する値を書く。
3. doctestモジュールを読み込み、doctest.testmodメソッドを呼び出す。

これを実行すると、

$ python3 rectangle.py

テストが成功すれば、沈黙している。

Pythonプログラミング物語 © 2016 Frontier Theme