LoginSignup
0
1

uuidをモックする

Posted at

少し手こずったのでメモとして残してきます。

sample.py
import uuid

def get_id():
    return uuid.uuid4().hex
test.py
from unittest.mock import patch, Mock, PropertyMock
from sample import get_id

# sample.py内のuuidをパッチする
patcher = patch("sample.uuid.uuid4")
mock = patcher.start()
m = Mock()

# プロパティをモックする
# side_effectを使って連番を返すようにする
p = PropertyMock(side_effect=[f"id_{i}" for i in range(2)])
type(m).hex = p

# uuid4()の返り値にモックを設定する
mock.return_value = m

assert get_id() == "id_0"
assert get_id() == "id_1"
patcher.stop()
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1