title: how do I test methods using boto3 with moto
body: <p>I am writing test cases for a quick class to find / fetch keys from s3, using boto3.  I have used moto in the past to test boto (not 3) code but am trying to move to boto3 with this project, and running into an issue:</p>
  
  <pre><code>class TestS3Actor(unittest.TestCase):
      @mock_s3
      def setUp(self):
          self.bucket_name = 'test_bucket_01'
          self.key_name = 'stats_com/fake_fake/test.json'
          self.key_contents = 'This is test data.'
          s3 = boto3.session.Session().resource('s3')
          s3.create_bucket(Bucket=self.bucket_name)
          s3.Object(self.bucket_name, self.key_name).put(Body=self.key_contents)
  </code></pre>
  
  <p>error:</p>
  
  <pre><code>...
  File "/Library/Python/2.7/site-packages/botocore/vendored/requests/packages/urllib3/connectionpool.py", line 344, in _make_request
  self._raise_timeout(err=e, url=url, timeout_value=conn.timeout)
  File "/Library/Python/2.7/site-packages/botocore/vendored/requests/packages/urllib3/connectionpool.py", line 314, in _raise_timeout
  if 'timed out' in str(err) or 'did not complete (read)' in str(err):  # Python 2.6
  TypeError: __str__ returned non-string (type WantWriteError)
  botocore.hooks: DEBUG: Event needs-retry.s3.CreateBucket: calling handler &lt;botocore.retryhandler.RetryHandler object at 0x10ce75310&gt;
  </code></pre>
  
  <p>It looks like moto is not mocking out the boto3 call correctly - how do I make that work?</p>