【发布时间】:2019-09-12 11:26:41
【问题描述】:
我有这样的 uuid 数据类:
import uuid
from dataclasses import dataclass, field
from typing import Union
@dataclass
class Foo:
id: Union[uuid.UUID, None] = field(default_factory=uuid.uuid4)
当我调用 Foo() 时,它会创建一个带有生成的 UUID 的对象 - 很好。
现在我想在测试中模拟这个 UUID 工厂,如下所示:
from unittest.mock import patch
TEST_UUIDS = ["uuid1", "uuid2"]
with patch.object(uuid, "uuid4", side_effects=TEST_UUIDS):
print(uuid.uuid4()) # Output: uuid1
print(Foo().id) # Output: an actual UUID
我的预期输出是uuid2。所以问题是:我如何正确修补工厂?在文档或此处找不到任何内容...
【问题讨论】:
标签: python mocking python-dataclasses