<div dir="ltr"><div dir="ltr" class="gmail_msg"><div dir="ltr" class="gmail_msg"><div class="gmail_msg"><div class="gmail_msg">Hi Paulo,<br class="gmail_msg"><br class="gmail_msg"></div></div></div><div class="gmail_quote gmail_msg"></div></div><div dir="ltr" class="gmail_msg"><div class="gmail_quote gmail_msg"><div dir="ltr" class="gmail_msg">On Wed, 8 Mar 2017 at 11:09 Paulo Matos &lt;pmatos@linki.tools&gt; wrote:<br class="gmail_msg"></div><blockquote class="gmail_quote gmail_msg" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
I would probably like that during testing, ls will return always the<br class="gmail_msg">
same thing and for that I need to mock it. But what would be the correct approach?<br class="gmail_msg"></blockquote></div></div><div dir="ltr" class="gmail_msg"><div class="gmail_quote gmail_msg"><div class="gmail_msg"><br class="gmail_msg"><div class="gmail_msg">if you want local to return a simple function 
instead of the real commadn you can directly monkeypatch the __getitem__
 method of LocalMachine() local is a module level instance of that 
class.<br class="gmail_msg"><br class="gmail_msg"></div>e.g.<br class="gmail_msg"><br class="gmail_msg"><pre class="gmail_msg">from plumbum.machines import LocalMachine


def get_item_mock(*_, **__):
    def i_am_the_mocked_function():
        print(&quot;I am mocked&quot;)
        return &quot;mock value&quot;

    return i_am_the_mocked_function

LocalMachine.__getitem__ = get_item_mock


def test_something_with_mocked_local():
    from plumbum import local

    assert local[&quot;dontcare&quot;]() == &quot;mock value&quot;
</pre><br class="gmail_msg"><br class="gmail_msg">if the formatting is mangled - I copied it into a gist: <a href="https://gist.github.com/obestwalter/2bae7adb5325984f801fc334ff1b8151" class="gmail_msg" target="_blank">https://gist.github.com/obestwalter/2bae7adb5325984f801fc334ff1b8151</a><br class="gmail_msg"> <br class="gmail_msg"></div><div class="gmail_msg">if you are looking for a nice mocking framework I would recommend flexmock: <a href="https://pypi.python.org/pypi/flexmock" class="gmail_msg" target="_blank">https://pypi.python.org/pypi/flexmock</a><br class="gmail_msg"><br></div><div class="gmail_msg">There you could say something like flexmock(&#39;module_under_test&#39;).should_receive(&#39;local&#39;).and_return(get_item_mock)<br></div><div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg">Cheers<br class="gmail_msg"></div></div></div><div dir="ltr" class="gmail_msg"><div class="gmail_quote gmail_msg"><div class="gmail_msg">Oliver<br class="gmail_msg"></div></div></div></div>