<div dir="ltr">OK I actually find a nice way of solving it:<div><br></div><div><font class="Apple-style-span" face="'courier new', monospace">def setUp(self):</font></div><div><font class="Apple-style-span" face="'courier new', monospace"> self.ret_val</font></div>
<div><font class="Apple-style-span" face="'courier new', monospace"> wrapper_self = self</font></div><div><font class="Apple-style-span" face="'courier new', monospace"><br></font></div><div><font class="Apple-style-span" face="'courier new', monospace"> class MyFakeClass(Mock):</font></div>
<div><font class="Apple-style-span" face="'courier new', monospace"> def my_method(self):</font></div><div><font class="Apple-style-span" face="'courier new', monospace"> return wrapper_self.ret_val</font></div>
<div><font class="Apple-style-span" face="'courier new', monospace"><br></font></div><div><font class="Apple-style-span" face="'courier new', monospace"> self.patcher = patch(</font><span class="Apple-style-span" style="font-family: 'courier new', monospace; ">"package.MyClassName", new = MyFakeClass)</span></div>
<div><span class="Apple-style-span" style="font-family: 'courier new', monospace; "> self.patcher.start()</span></div><meta http-equiv="content-type" content="text/html; charset=utf-8"><div><font class="Apple-style-span" face="'courier new', monospace"><br>
</font></div><div><font class="Apple-style-span" face="'courier new', monospace">def tearDown(self):</font></div><div><font class="Apple-style-span" face="'courier new', monospace"> self.patcher.stop()</font></div>
<div><span class="Apple-style-span" style="font-family: 'courier new', monospace; "><br></span></div><div><span class="Apple-style-span" style="font-family: 'courier new', monospace; ">def test_something(self):</span></div>
<div><font class="Apple-style-span" face="'courier new', monospace"> self.ret_val = "xyz"</font></div><div><font class="Apple-style-span" face="'courier new', monospace"> ....</font></div>
<div>
<br></div><div>If you have a better way, please share :)<br><br><div class="gmail_quote">On Wed, May 25, 2011 at 1:39 PM, Yoni Tsafir <span dir="ltr"><<a href="mailto:yonix85@gmail.com">yonix85@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><div dir="ltr"><div>Sorry for spamming with mock questions the last few days :)</div><div>Just doing some massive testing for complicated code.</div>
<div><br></div><div>I know that when I patch a specific method: </div><div>
<font face="'courier new', monospace">@patch("package.MyClassName.my_method", new = Mock(return_value="xyz"))</font></div><div><br></div><div>Even new instances of MyClass will return "xyz" as expected.</div>
<div><br></div><div>However, when I try:</div><div><font face="'courier new', monospace">@patch("package.MyClassName")</font></div>
<div><font face="'courier new', monospace">def test_something(self, my_mock):</font></div><div><font face="'courier new', monospace"> my_mock.my_method.return_value = "xyz"</font></div>
<div><br></div><div>When in code I run:</div><div><font face="'courier new', monospace">MyClassName().my_method()</font></div><div><br></div><div>I get a new different Mock and not "xyz" as I would wish.</div>
<div><br></div><div>Now, it kinda makes sense to me, but I would like to know if there's a way around it.</div><div>Couldn't really achieve this by mocking __init__ (or maybe I did it wrong?)</div><div><br></div>
<div>
Thanks!</div><div>Yoni.</div><div><div><br></div></div></div>
</blockquote></div><br></div></div>