title: Python mocking: Patching Python Pika's "basic_publish" function
body: <p>Consider this code under test:</p>
  
  <pre><code>import pika
  
  class MQ_Client():
      connection = None
      channel = None
      exchange_name="my_exchange"
  
      def connect(self):
          self.connection = pika.BlockingConnection(pika.ConnectionParameters(host="mq_server")
  
      def publish(self, message):
  
          properties = pika.BasicProperties(content_type='text/json', delivery_mode=1)
  
          if self.channel.basic_publish(exchange=self.exchange_name, routing_key='', properties=properties, body=message):
              log.info("Successfully published this message to exchange \"" + self.exchange_name + "\": " + message)
          else:
              log.error("Failed to publish message \"" + message + "\" to the exchange \"" + self.exchange_name + "\"!")
              raise Exception("Failed to publish message to the queue.")
  </code></pre>
  
  <p>What I'd like to to is to patch Pika's <code>basic_publish</code> method to raise an exception, and could use some help figuring out how to do this. This is from my last attempt:</p>
  
  <pre><code>@mock.patch.object(pika.BlockingConnection, 'channel')
  def test_that_mq_publish_problems_return_error(self, mocked_channel):
      with self.client as client:
  
          mocked_channel.basic_publish.side_effect = Exception()
  
          response = client.put("/api/users/bob", json="somedata")
          self.assertEqual(response.status_code, 500) 
  </code></pre>
  
  <p>Any advice on how to get this working will be appreciated!</p>