【发布时间】:2018-07-12 11:16:33
【问题描述】:
我必须确保序列是同质的,即只包含相似类型的对象。所以我添加了一个像assert all(isinstance(obj, type(my_list[0])) for obj in my_list[1:]) 这样的断言,这并不完美,但足以满足我的需求。不幸的是,这在与unittest.mock.Mock 一起使用时会导致问题:
import unittest.mock as utm
class C:
pass
my_list = [utm.Mock(spec_set=C), utm.Mock(spec_set=C)]
all(isinstance(obj, type(my_list[0])) for obj in my_list[1:])
>>>
False
特别是两个模拟具有不同的类型,即使它们具有相同的spec_set:
isinstance(utm.Mock(spec_set=C), type(utm.Mock(spec_set=C)))
>>>
False
有什么方法可以配置模拟,使它们被认为是同一类型?修改检查也是一种选择,只要它不是模拟特定的。
如果感兴趣的话:我使用的是 Python 3.5。
【问题讨论】:
标签: python python-3.x unit-testing mocking