Pythonのunittest.Mockでスタブを作って単体テストする
tender6admin ・ 約1分
Pythonのunittest.Mockでスタブを作って単体テストする
概要
- 自作クラスに対して、
unittest.mock.MagicMockを使ってモックを作成してテストする。
サンプルコード(挨拶を返すプログラムとテストコード)
(テストしたいファイル。ランダムで挨拶の語を選んで、挨拶文を返す)
# greeting.py
import random
class Greeting(): def greeting_phrase(self, name): grt = self.greeting_word() result = f'{grt}! {name}.' print(result) return result
def greeting_word(self): grt = ['Hello', 'Bonjour', 'Konnichiwa'] i = random.randint(0, len(grt) - 1) return grt[i]
(テストコード。unittest.mock.MagicMockを使ってモックを作成してテストする)
# test_greeting.py
from unittest import TestCasefrom unittest.mock import patch, MagicMockfrom greeting import Greeting
class TestGreeting(TestCase): def test_greeting_phrase(self): grt_mock = MagicMock() grt_mock.return_value = 'Hi' # 挨拶の語を「Hi」に置き換える
補足
- 自作クラスのメソッドを置き換える場合、単にメソッド名だけでなく、長い名前でフルで指定する。
- 別フォルダ内にある.pyファイルに書かれているクラスをテストする場合に注意が必要。
- クラス名など命名規則は
PEP8をよく読む。
参考