Newer
Older
pydwiki / log_manager / tests.py
from django.test import TestCase

from .trace_log import trace_log


class TraceLogTestCase(TestCase):
    """TraceLog テストケース。"""

    def setUp(self):
        pass

    def test_trace_log(self):
        """trace_log デコレーターのテスト。

        #. 2つの引数をとり、加算した値を返す関数を用意する。
        #. trace_log(<用意した関数>)(1, 2) を実行する。
        #. 実行結果が 3 (加算した値) となること。
        """

        def mock_function(a: int, b: int):
            return a + b

        decorated_function = trace_log(mock_function)
        result = decorated_function(1, 2)
        self.assertEqual(result, 3)

    def test_trace_log_exception(self):
        """trace_log デコレーターの Exception 発生時のテスト。

        #. ValueError("invalid values") の例外が発生する関数を用意する。
        #. trace_log(<用意した関数>)(<関数への引数>) を実行する。
        #. ValueError("invalid values") が発生すること。
        """

        def mock_exception_function(a: int, b: int):
            raise ValueError("invalid values")

        decorated_function = trace_log(mock_exception_function)
        try:
            decorated_function(1, 2)
            self.fail()
        except ValueError as e:
            self.assertEqual(str(e), "invalid values")