【发布时间】:2017-11-07 19:25:58
【问题描述】:
我有一个测试用例,在该测试用例中,我创建了一个对象,我想在模块uuid 中模拟函数uuid4。
TEST_UUIDS = ['uuid_{}'.format(i) for i in range(10000)]
UUID_POOL = iter(TEST_UUIDS)
def generate_uuid() -> str:
return next(UUID_POOL)
class MyTestCase(TestCase):
def setUp(self, **kwargs):
self._create_my_object
@patch.object(uuid, 'uuid4', generate_uuid)
def _create_my_object(self):
# Create an object using a uuid
我现在的问题是,当我运行编写两个测试用例时,第二次创建对象时,它会像第一次一样获取其他 uuid。因此,结果取决于我的测试类中测试用例的数量以及它们的运行顺序,这是我不想要的。
- 这是模拟 uuid 生成器的最佳方式吗?
- 如何在每次调用 setUp(或 tearDown)时重置或重新创建迭代器?
【问题讨论】:
标签: python iterator mocking python-unittest