【Python】テストコードのテンプレート|unittest

【Python】テストコードのテンプレート|unittest

やること

Pythonのテストコードのテンプレートです。
自分がもともとJavaだから馴染みやすいと言う理由で、フレームワークはunittestを使っています。

このままコピペして、テストの内容に合わせて書き換えます。

参考 unittest --- ユニットテストフレームワークhttps://www.python.org/

コード

# test_template.py
import unittest
import sys


class Test〇〇(unittest.TestCase):
    def setUp(self) -> None:
        """
        テストメソッド実行前の処理
        """
        return super().setUp()

    def tearDown(self) -> None:
        """
        テストメソッド実行後の処理
        """
        return super().tearDown()

    def shortDescription(self):
        """Superクラスのメソッドを上書き
           DocStringを改行で区切らず、すべて出力させる。
           エビデンスを整理しやすくするためなので、不要であればメソッドごと削除

        Returns:
            doc: DocString
        """
        doc = self._testMethodDoc
        return doc if doc else None

    def test_〇〇(self):
        """
        [summary]
        """
        pass

# testutil.py
def print_result(before, after):
    """Before, Afterを出力
    Args:
        before (object): Before
        after (object): After
    """
    print('Before'.ljust(80, '-'), '\n', before, '\n')
    print('After'.ljust(80, '-'), '\n', after, '\n')

解説

shortDescription()は、unittest.TestCase.shortDescription()のオーバーライドです。
元々はDocStringの改行までを出力するメソッドなのですが、DocStringをすべて出力するようにしています。
DocStringにテスト内容を書いておけば、エビデンスの確認や整理の時に整理しやすいという意図です。
邪魔だからいらないよ、という場合はメソッドごと消してください。

testutil.pyはテストで共通に使える処理を実装しています。
結果を出力したり、使いまわせるテストデータを書いたりします。

わたしは使いまわすのだからまとめて良いんじゃないか、というタイプですが、あまりやる人はいないので真似しないほうが良いかも。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA