<div dir="ltr"><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Sep 23, 2015 at 3:06 AM, liuxinguo <span dir="ltr"><<a href="mailto:liuxinguo@huawei.com" target="_blank">liuxinguo@huawei.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">





<div link="blue" vlink="purple" lang="ZH-CN">
<div>
<p class="MsoNormal"><span lang="EN-US">Hi,<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US"><u></u> <u></u></span></p>
<p class="MsoNormal"><span lang="EN-US">In a.py we have a function:<u></u><u></u></span></p>
<p class="MsoNormal" style="text-align:left" align="left"><span style="font-size:10pt;font-family:"Courier New";color:blue" lang="EN-US">def</span><span style="font-size:10pt;font-family:"Courier New";color:black" lang="EN-US">
<b>_change_file_mode</b>(filepath):</span><span style="font-size:10pt;font-family:"Courier New"" lang="EN-US"><u></u><u></u></span></p>
<p class="MsoNormal" style="text-indent:18pt"><span style="font-size:10pt;font-family:"Courier New";color:black" lang="EN-US">utils.execute(</span><i><span style="font-size:10pt;font-family:"Courier New";color:rgb(0,170,0)" lang="EN-US">'<u>chmod</u>'</span></i><span style="font-size:10pt;font-family:"Courier New";color:black" lang="EN-US">,
</span><i><span style="font-size:10pt;font-family:"Courier New";color:rgb(0,170,0)" lang="EN-US">'600'</span></i><span style="font-size:10pt;font-family:"Courier New";color:black" lang="EN-US">, filepath, run_as_root=</span><span style="font-size:10pt;font-family:"Courier New";color:blue" lang="EN-US">True</span><span style="font-size:10pt;font-family:"Courier New";color:black" lang="EN-US">)<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:"Courier New";color:black" lang="EN-US"><u></u> <u></u></span></p>
<p class="MsoNormal"><span lang="EN-US">In test_xxx.py, there is a testclass:<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:"Courier New";color:black" lang="EN-US">clas<b>s xxxxDriverTestCase(test.TestCase):<u></u><u></u></b></span></p>
<p class="MsoNormal" style="text-indent:21pt"><b><span style="font-size:10pt;font-family:"Courier New";color:black" lang="EN-US">def test_a(self)<u></u><u></u></span></b></p>
<p class="MsoNormal" style="text-indent:21pt"><b><span style="font-size:10pt;font-family:"Courier New";color:black" lang="EN-US">    …<u></u><u></u></span></b></p>
<p class="MsoNormal" style="text-indent:21pt"><b><span style="font-size:10pt;font-family:"Courier New";color:black" lang="EN-US">    Call a. _change_file_mode<u></u><u></u></span></b></p>
<p class="MsoNormal" style="text-indent:40.15pt"><b><span style="font-size:10pt;font-family:"Courier New";color:black" lang="EN-US">…<u></u><u></u></span></b></p>
<p class="MsoNormal"><b><span style="font-size:10pt;font-family:"Courier New";color:black" lang="EN-US"><u></u> <u></u></span></b></p>
<p class="MsoNormal" style="text-indent:21pt"><b><span style="font-size:10pt;font-family:"Courier New";color:black" lang="EN-US">def test_b(self)<u></u><u></u></span></b></p>
<p class="MsoNormal" style="text-indent:21pt"><b><span style="font-size:10pt;font-family:"Courier New";color:black" lang="EN-US">    …<u></u><u></u></span></b></p>
<p class="MsoNormal" style="text-indent:21pt"><b><span style="font-size:10pt;font-family:"Courier New";color:black" lang="EN-US">    Call a. _change_file_mode<u></u><u></u></span></b></p>
<p class="MsoNormal" style="text-indent:40.15pt"><b><span style="font-size:10pt;font-family:"Courier New";color:black" lang="EN-US">…</span></b><span lang="EN-US"><u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US"><u></u> <u></u></span></p>
<p class="MsoNormal"><span lang="EN-US">I have tried to mock like mock out function
</span><b><span style="font-size:10pt;font-family:"Courier New";color:black" lang="EN-US">_change_file_mode
</span></b><span lang="EN-US">like this:<u></u><u></u></span></p>
<p class="MsoNormal"><i><span style="font-size:10pt;font-family:"Courier New";color:rgb(125,125,125)" lang="EN-US">@mock.patch.object</span></i><span style="font-size:10pt;font-family:"Courier New";color:black" lang="EN-US">(a,
</span><i><span style="font-size:10pt;font-family:"Courier New";color:rgb(0,170,0)" lang="EN-US">'_change_file_mode',
</span></i><span style="font-size:10pt;font-family:"Courier New";color:black" lang="EN-US">return_value=None)</span><span lang="EN-US"><u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:10pt;font-family:"Courier New";color:black" lang="EN-US">clas<b>s xxxxDriverTestCase(test.TestCase):<u></u><u></u></b></span></p>
<p class="MsoNormal" style="text-indent:21pt"><b><span style="font-size:10pt;font-family:"Courier New";color:black" lang="EN-US">def test_a(self)<u></u><u></u></span></b></p>
<p class="MsoNormal" style="text-indent:21pt"><b><span style="font-size:10pt;font-family:"Courier New";color:black" lang="EN-US">    …<u></u><u></u></span></b></p>
<p class="MsoNormal" style="text-indent:21pt"><b><span style="font-size:10pt;font-family:"Courier New";color:black" lang="EN-US">    Call a. _change_file_mode<u></u><u></u></span></b></p>
<p class="MsoNormal" style="text-indent:40.15pt"><b><span style="font-size:10pt;font-family:"Courier New";color:black" lang="EN-US">…<u></u><u></u></span></b></p>
<p class="MsoNormal"><b><span style="font-size:10pt;font-family:"Courier New";color:black" lang="EN-US"><u></u> <u></u></span></b></p>
<p class="MsoNormal" style="text-indent:21pt"><b><span style="font-size:10pt;font-family:"Courier New";color:black" lang="EN-US">def test_b(self)<u></u><u></u></span></b></p>
<p class="MsoNormal" style="text-indent:21pt"><b><span style="font-size:10pt;font-family:"Courier New";color:black" lang="EN-US">    …<u></u><u></u></span></b></p>
<p class="MsoNormal" style="text-indent:21pt"><b><span style="font-size:10pt;font-family:"Courier New";color:black" lang="EN-US">    Call a. _change_file_mode<u></u><u></u></span></b></p>
<p class="MsoNormal" style="text-indent:40.15pt"><b><span style="font-size:10pt;font-family:"Courier New";color:black" lang="EN-US">…<u></u><u></u></span></b></p>
<p class="MsoNormal"><span lang="EN-US"><u></u> <u></u></span></p>
<p class="MsoNormal"><span lang="EN-US">But the mock takes no effort, the real function _change_file_mode is still executed.<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US">So how to make a mock effactive for all method of a testclass?<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US">Thanks for any input!<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US"><u></u> </span></p></div></div></blockquote><div><br></div><div>Use oslotest's mockpatch.PatchObject fixture: <a href="http://docs.openstack.org/developer/oslotest/api.html#oslotest.mockpatch.PatchObject">http://docs.openstack.org/developer/oslotest/api.html#oslotest.mockpatch.PatchObject</a><br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div link="blue" vlink="purple" lang="ZH-CN"><div><p class="MsoNormal"><span lang="EN-US"><u></u></span></p>
<p class="MsoNormal"><span lang="EN-US">Wilson Liu<u></u><u></u></span></p>
</div>
</div>

<br>__________________________________________________________________________<br>
OpenStack Development Mailing List (not for usage questions)<br>
Unsubscribe: <a href="http://OpenStack-dev-request@lists.openstack.org?subject:unsubscribe" rel="noreferrer" target="_blank">OpenStack-dev-request@lists.openstack.org?subject:unsubscribe</a><br>
<a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" rel="noreferrer" target="_blank">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a><br>
<br></blockquote></div><br></div></div>