Python mock: mocking base class for inheritance

前端 未结 2 1601
星月不相逢
星月不相逢 2020-12-30 04:38

I am testing a class that inherits from another one very complex, with DB connection methods and a mess of dependences. I would like to mock its base class so that I can nic

2条回答
  •  星月不相逢
    2020-12-30 05:20

    This should work for you.

    import mock
    
    ClassMock = mock.MagicMock # <-- Note the removed brackets '()'
    
    class RealClass(ClassMock):
    
        def lol(self):
            print 'lol'
    
    real = RealClass()
    real.lol()  # Does not print lol, but returns another mock
    
    print real # prints 
    

    You should'nt pass an instance of the class as you did. mock.MagicMock is a class, so you pass it directly.

    In [2]: inspect.isclass(mock.MagicMock)
    Out[2]: True
    

提交回复
热议问题