Python Pytest, unittest : Mocking out a non-existent imported module

  • Thread starter Thread starter Swamp Thing
  • Start date Start date
  • Tags Tags
    module
AI Thread Summary
To write a test module that mocks the import statement in the provider module, the key approach is to use `sys.modules` to replace the missing module with a mock. Instead of needing a full dotted path for the module, simply assigning `sys.modules['a_missing_module'] = Mock()` suffices. This method allows for effective testing of the client module that imports the `helper_function` from the provider, even when the actual implementation of the missing module is not included. This technique simplifies the mocking process when only specific functions are imported from a module.
Swamp Thing
Insights Author
Messages
1,028
Reaction score
763
TL;DR Summary
A 'provider' module imports 'a_missing_module'. A 'client' module imports just one function from 'provider'. (It does not import the entire 'provider' module). How can we mock out 'a_missing_module' while testing?
The following provider module imports a_missing_module and implements a helper_function. (I haven't put in any code that actually uses the missing module, but there could be such code in general).
Code:
# provider.py
import a_missing_module

def helper_function():
    return 999

Now this client module imports the helper_function from the provider:
Code:
# client.py
from provider import helper_function

def client_function():
    return helper_function()

How can I write a test module that mocks out the import statement in the provider? In the past, I have used things like sys.modules['client.provider.missing_module'] = Mock() in cases where the client imports an entire provider module, but now it only imports a function from the provider, so I don't know how to proceed.
 
Technology news on Phys.org
Ok, got it after some trial and error. You just do sys.modules['a_missing_module'] = Mock(). You don't need to worry about a full dotted path to the module, unlike the more usual kind of mocking/patching.
 
  • Informative
Likes Wrichik Basu
Dear Peeps I have posted a few questions about programing on this sectio of the PF forum. I want to ask you veterans how you folks learn program in assembly and about computer architecture for the x86 family. In addition to finish learning C, I am also reading the book From bits to Gates to C and Beyond. In the book, it uses the mini LC3 assembly language. I also have books on assembly programming and computer architecture. The few famous ones i have are Computer Organization and...
I have a quick questions. I am going through a book on C programming on my own. Afterwards, I plan to go through something call data structures and algorithms on my own also in C. I also need to learn C++, Matlab and for personal interest Haskell. For the two topic of data structures and algorithms, I understand there are standard ones across all programming languages. After learning it through C, what would be the biggest issue when trying to implement the same data...

Similar threads

Replies
7
Views
5K
Replies
9
Views
1K
Replies
4
Views
5K
Replies
18
Views
1K
Replies
1
Views
1K
Back
Top