We have been using Mock for python for a while.
Now, we have a situation in which we want to mock a function
def foo(self, my_param):
#do something here, assign something to my_result
return my_result
Normally, the way to mock this would be (assuming foo being part of an object)
self.foo = MagicMock(return_value="mocked!")
Even, if i call foo() a couple of times i can use
self.foo = MagicMock(side_effect=["mocked once", "mocked twice!"])
Now, I am facing a situation in which I want to return a fixed value when the input parameter has a particular value. So if let's say "my_param" is equal to "something" then I want to return "my_cool_mock"
This seems to be available on mockito for python
when(dummy).foo("something").thenReturn("my_cool_mock")
I have been searching on how to achieve the same with Mock with no success?
Any ideas?
You can also use
@mock.patch.object
:Let's say a module
my_module.py
usespandas
to read from a database and we would like to test this module by mockingpd.read_sql_table
method (which takestable_name
as argument).What you can do is to create (inside your test) a
db_mock
method that returns different objects depending on the argument provided:In your test function you then do:
http://www.voidspace.org.uk/python/mock/mock.html#calling