Code:

from unittest.mock import Mock
class C:
    def get_val(self):
        print(1)

mock = Mock()
mock.mock_add_spec(C())
mock.get_val.side_effect = C().get_val
print(isinstance(mock, C))
True
mock.get_val()
1

In the above code, if I replace `mock.get_val.side_effect = C().get_val` with 
`mock.get_val.return_value = 1` the code still works same.

from unittest.mock import Mock
class C:
    def get_val(self):
        print(1)

mock = Mock()
mock.mock_add_spec(C())
mock.get_val.return_value = 1
print(isinstance(mock, C))
True
mock.get_val()
1

So question is that: Are there any difference using side_effect and 
return_value while configuring a return value of a method? 

>From doc of 
>[mock_add_spec()](https://docs.python.org/3/library/unittest.mock.html#unittest.mock.Mock.mock_add_spec)
> it says:

> Add a spec to a mock. spec can either be an object or a list of strings. 

What kind of string it refers here? any random valid strings? Why would some 
one try to mock a string objects instead of just using that string object 
itself?  How does this part work while attaching a spec to the Mock?

I understand the object spec part, not just the list of strings use case. So if 
anyone can explain this, I will be very helpful.

Thanks,

Arup Rakshit
a...@zeit.io



_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor

Reply via email to