如何使两个相等的unittest.mock.Mock对象具有相同的类型?

时间:2018-07-12 11:16:34

标签: python python-3.x unit-testing mocking

我必须确保序列是同质的,即仅包含相似类型的对象。因此,我添加了一个类似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。

1 个答案:

答案 0 :(得分:0)

为什么不这样做?

df1[, End_Time := shift(Start_Time, type = "lead", fill = last(Start_Time))]

# add sum of bbb to table 1 from table 2
df1[, No_Visitors_in_range := df2[df1, on=.(hit_time_gmt >= Start_Time, hit_time_gmt < End_Time), sum(visitor_id), by=.EACHI]$V1]