How to mock an entire module (all functions and attrbutes)#
Say for example you have a module that sends requests to a live system that you don’t want running when you run tests. The simple solution is to mock the entire module - although it is probably better to refactor that module and only change the function that is doing the sending out. Even better would be to have a settings file for the environment to change the settings to a test server when in testing mode.
Nonetheless, we want to mock a module.
Say your module is called
sending_messages, create a file called
from mock import Mock import sys import types module_name = 'sending_messages' mocked_module = types.ModuleType(module_name) sys.modules[module_name] = mocked_module # Do this for every function in that file mocked_module.my_function_name = Mock(name=module_name+'.my_function_name')
Save that and import it before you import the modules that use that module:
from mock_sending_messages import mocked_module