1

Using the example in the official documentation's Quick Guide, I tried to implement mocking. I'm trying to mock the vocalize() method and have it return "Meow, Meow!". Here is what I've tried:

import mock

class AnimalFactory:
    def vocalize(self):
        return "Woof, Woof!"

def build_animal_factory():
    a = AnimalFactory()
    sounds = a.vocalize()
    print sounds

def main():
    instance = AnimalFactory()
    instance.vocalize = mock.MagicMock(return_value='Meow, Meow!')
    build_animal_factory()

main()

Running this will output:

$ python /var/tmp/mock_test.py 
Woof, Woof!

I'm guessing that the mocked method only exists in the scope of main(). How do I get the mocked method to affect the build_animal_factory() function?

Update

Based on the linked answer, I got it working by changing the main() method to:

@mock.patch.object(AnimalFactory, 'vocalize')
def main(mocked_method):
    mocked_method.return_value = 'Meow, Meow!'
    build_animal_factory()
Dirty Penguin
  • 4,212
  • 9
  • 45
  • 69

0 Answers0