Can I fake/mock the type of my mock objects in python unittests

后端 未结 2 996
陌清茗
陌清茗 2020-12-15 04:21

In my python code I check the type of one of the parameters to make sure it is of the type I expect. For instance:

def myfunction(dbConnection):
    if (ty         


        
2条回答
  •  陌清茗
    陌清茗 (楼主)
    2020-12-15 04:53

    With all due respect, It looks like you guys are not quite right!

    I can use duck typing as said, but there is a way to do what I intended to do in the first place:

    from http://docs.python.org/dev/library/unittest.mock.html

    Mock objects that use a class or an instance as a spec or spec_set are able to pass isintance tests:

    >>>
    >>> mock = Mock(spec=SomeClass)
    >>> isinstance(mock, SomeClass)
    True
    >>> mock = Mock(spec_set=SomeClass())
    >>> isinstance(mock, SomeClass)
    True
    

    so my example code would be like:

    m = mock.MagicMock(spec=bpgsql.Connection)
    isinstance(m, bpgsql.Connection) 
    

    this returns True

    All that said, I am not arguing for strict type checking in python, I say if you need to check it you can do it and it works with testing and mocking too.

提交回复
热议问题