如何使用unittest.mock测试python类上实例方法的实现?



我有以下类:

class RefdataMapping(object):
def _init_(LONG_LIST_OF_ARGUMENTS):
# Complex stuff
def is_hybrid_default_mapping(self, mapping):
# Code I want to test

我想测试is_hybrid_default_mapping的实现,而不必完全实例化RefdataMapping的对象。

我的拙见导致了这样的结果:

def test_is_hybrid_default_mapping():
mappings = [{"a": "*", "b": "*", "c": "*"}]
mock = Mock(spec=RefDataMapping)
res = mock.is_hybrid_default_mapping(mappings[0])
assert res == False

,但是由于res只返回模拟方法的一个实例,所以测试失败。

FAILED tests/test_basic.py::test_is_hybrid_default_mapping - AssertionError: assert <Mock name='mock.is_hybrid_default_mapping()' id='139681656266272'> == False

我如何调用方法,而不必实例化类的所有复杂性,而不添加继承或接口到这个实现?

多亏了@jonrsharpe,这变得非常简单:

使用模拟对象作为self参数调用方法。

def test_is_hybrid_default_mapping():
mappings = [{"a": "*", "b": "*", "c": "*"}]
mock = Mock(spec=RefDataMapping)
res = RefDataMapping.is_hybrid_default_mapping(mock, mappings[0])
assert res == False

最新更新