Improve test structure (proposal)
diff --git a/test_requests.py b/tests/integration/test_requests.py
similarity index 100%
rename from test_requests.py
rename to tests/integration/test_requests.py
diff --git a/tests/unit/test_requests_api.py b/tests/unit/test_requests_api.py
new file mode 100755
index 0000000000..98591c3b64
--- /dev/null
+++ b/tests/unit/test_requests_api.py
@@ -0,0 +1,71 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+import unittest
+import mock
+import sys
+import os
+sys.path.append(os.getcwd())
+
+try:
+    import omnijson as json
+except ImportError:
+    import json
+
+import requests
+from requests.models import Response
+
+class RequestsAPIUnitTests(unittest.TestCase):
+    """Requests API unit test cases."""
+
+    def setUp(self):
+        pass
+
+
+    def tearDown(self):
+        """Teardown."""
+        pass
+
+
+    @mock.patch('requests.api.request')
+    def test_http_get(self, mock_request):
+        mock_request.return_value = Response()
+        requests.get('http://google.com')
+        mock_request.assert_called_once_with('get', 'http://google.com',
+                                             allow_redirects= True)
+
+    @mock.patch('requests.api.request')
+    def test_http_head(self, mock_request):
+        mock_request.return_value = Response()
+        requests.head('http://google.com')
+        mock_request.assert_called_once_with('head', 'http://google.com',
+                                             allow_redirects= True)
+
+    @mock.patch('requests.api.request')
+    def test_http_post(self, mock_request):
+        mock_request.return_value = Response()
+        requests.post('http://google.com', {})
+        mock_request.assert_called_once_with('post', 'http://google.com',
+                                              data= {})
+
+    @mock.patch('requests.api.request')
+    def test_http_put(self, mock_request):
+        mock_request.return_value = Response()
+        requests.put('http://google.com', {})
+        mock_request.assert_called_once_with('put', 'http://google.com',
+                                             data= {})
+
+    @mock.patch('requests.api.request')
+    def test_http_patch(self, mock_request):
+        mock_request.return_value = Response()
+        requests.patch('http://google.com', {})
+        mock_request.assert_called_once_with('patch', 'http://google.com',
+                                             data= {})
+
+    @mock.patch('requests.api.request')
+    def test_http_delete(self, mock_request):
+        mock_request.return_value = Response()
+        requests.delete('http://google.com')
+        mock_request.assert_called_once_with('delete', 'http://google.com')
+
+if __name__ == '__main__':
+    unittest.main()

This might be somewhat related to issue #153. I think it would make sense to split up testing into a unit testing and an integration testing part (loosely defined). In the unit tests the actual methods are tested with everything mocked out. This way it can be assured that the respective external methods are always called with the right arguments. In the integration testing suite it is allowed to call external entities (like `httpbin.org`) for testing the overall function. So I just moved the existing tests there.

I have restructured the tests organization a bit and added some basic unit tests for the `api` module. However I would like to get your feedback on this, before going on. As this will definitely be some work and take a while to reach a somewhat good level of coverage.
