title: python mock side_effect or return_value dependent on call_count
body: <p>To test a polling function I want to mock the calling of a sub function so that the first time it is called it will fail, and the second time it is called it will succeed. Here's a very simplified version of it:</p>
  
  <pre><code>poll_function(var1):
      value = sub_function(var1)  # First call will return None
      while not value:
          time.sleep(POLLING_INTERVAL)  
          value = sub_function(var1) # A subsequent call will return a string, e.g "data"
      return value
  </code></pre>
  
  <p>Is this possible to do with a <code>Mock</code> object from the <code>mock</code> framework? I know <code>Mock</code> objects have a <code>call_count</code> attribute I should be able to use somehow.</p>
  
  <p>Right now I've solved it by creating a custom mock object that I use to monkey patch <code>sub_function()</code>, but I feel there should be a better less verbose way of doing it:</p>
  
  <pre><code>def test_poll():
      class MyMock(object):                                                      
  
          def __init__(self, *args):                                             
              self.call_count = 0                                                
  
          def sub_function(self, *args, **kwargs):                             
              if self.call_count &gt; 1:                                            
                  return "data"            
              else:                                                              
                  self.call_count += 1                                           
                  return None  
  
      my_mock = MyMock()                                                         
      with patch('sub_function', my_mock.sub_function):           
          ok_(poll_function())         
  </code></pre>