from requests.compat import str, bytes, StringIO
# import envoy
from requests import HTTPError
+from requests import get, post, head, put
from requests.auth import HTTPBasicAuth, HTTPDigestAuth
_httpbin = False
-class RequestsTestSuite(unittest.TestCase):
+class TestSetup(object):
"""Requests test cases."""
# It goes to eleven.
_httpbin = True
+class RequestsTestSuite(TestSetup, unittest.TestCase):
+ """Requests test cases."""
+
def test_entry_points(self):
requests.session
def test_invalid_url(self):
- self.assertRaises(ValueError, requests.get, 'hiwpefhipowhefopw')
+ self.assertRaises(ValueError, get, 'hiwpefhipowhefopw')
def test_HTTP_200_OK_GET(self):
- r = requests.get(httpbin('/get'))
+ r = get(httpbin('/get'))
self.assertEqual(r.status_code, 200)
def test_response_sent(self):
- r = requests.get(httpbin('/get'))
+ r = get(httpbin('/get'))
self.assertTrue(r.request.sent)
def test_HTTP_302_ALLOW_REDIRECT_GET(self):
- r = requests.get(httpbin('redirect', '1'))
+ r = get(httpbin('redirect', '1'))
self.assertEqual(r.status_code, 200)
def test_HTTP_302_GET(self):
- r = requests.get(httpbin('redirect', '1'), allow_redirects=False)
+ r = get(httpbin('redirect', '1'), allow_redirects=False)
self.assertEqual(r.status_code, 302)
def test_HTTP_200_OK_GET_WITH_PARAMS(self):
heads = {'User-agent': 'Mozilla/5.0'}
- r = requests.get(httpbin('user-agent'), headers=heads)
+ r = get(httpbin('user-agent'), headers=heads)
assert heads['User-agent'] in r.text
self.assertEqual(r.status_code, 200)
def test_HTTP_200_OK_GET_WITH_MIXED_PARAMS(self):
heads = {'User-agent': 'Mozilla/5.0'}
- r = requests.get(httpbin('get') + '?test=true', params={'q': 'test'}, headers=heads)
+ r = get(httpbin('get') + '?test=true', params={'q': 'test'}, headers=heads)
self.assertEqual(r.status_code, 200)
'Mozilla/5.0 (github.com/kennethreitz/requests)'
}
- r = requests.get(httpbin('user-agent'), headers=heads);
+ r = get(httpbin('user-agent'), headers=heads);
self.assertTrue(heads['User-agent'] in r.text)
heads = {
'Mozilla/5.0 (github.com/kennethreitz/requests)'
}
- r = requests.get(httpbin('user-agent'), headers=heads);
+ r = get(httpbin('user-agent'), headers=heads);
self.assertTrue(heads['user-agent'] in r.text)
def test_HTTP_200_OK_HEAD(self):
- r = requests.head(httpbin('/get'))
+ r = head(httpbin('/get'))
self.assertEqual(r.status_code, 200)
def test_HTTP_200_OK_PUT(self):
- r = requests.put(httpbin('put'))
+ r = put(httpbin('put'))
self.assertEqual(r.status_code, 200)
auth = ('user', 'pass')
url = service('basic-auth', 'user', 'pass')
- r = requests.get(url, auth=auth)
+ r = get(url, auth=auth)
self.assertEqual(r.status_code, 200)
- r = requests.get(url)
+ r = get(url)
self.assertEqual(r.status_code, 401)
s = requests.session(auth=auth)
- r = s.get(url)
+ r = get(url, session=s)
self.assertEqual(r.status_code, 200)
auth = HTTPBasicAuth('user', 'pass')
url = service('basic-auth', 'user', 'pass')
- r = requests.get(url, auth=auth)
+ r = get(url, auth=auth)
self.assertEqual(r.status_code, 200)
auth = ('user', 'pass')
- r = requests.get(url, auth=auth)
+ r = get(url, auth=auth)
self.assertEqual(r.status_code, 200)
- r = requests.get(url)
+ r = get(url)
self.assertEqual(r.status_code, 401)
s = requests.session(auth=auth)
- r = s.get(url)
+ r = get(url, session=s)
self.assertEqual(r.status_code, 200)
auth = HTTPDigestAuth('user', 'pass')
url = service('digest-auth', 'auth', 'user', 'pass')
- r = requests.get(url, auth=auth)
+ r = get(url, auth=auth)
self.assertEqual(r.status_code, 200)
- r = requests.get(url)
+ r = get(url)
self.assertEqual(r.status_code, 401)
s = requests.session(auth=auth)
- r = s.get(url)
+ r = get(url, session=s)
self.assertEqual(r.status_code, 200)
def test_POSTBIN_GET_POST_FILES(self):
for service in SERVICES:
url = service('post')
- post = requests.post(url).raise_for_status()
+ post1 = post(url).raise_for_status()
- post = requests.post(url, data={'some': 'data'})
- self.assertEqual(post.status_code, 200)
+ post1 = post(url, data={'some': 'data'})
+ self.assertEqual(post1.status_code, 200)
- post2 = requests.post(url, files={'some': open('test_requests.py')})
+ post2 = post(url, files={'some': open('test_requests.py')})
self.assertEqual(post2.status_code, 200)
- post3 = requests.post(url, data='[{"some": "json"}]')
+ post3 = post(url, data='[{"some": "json"}]')
self.assertEqual(post3.status_code, 200)
for service in SERVICES:
url = service('post')
- post = requests.post(url,
- files={'some': open('test_requests.py')},
- data={'some': 'data'})
+ post1 = post(url,
+ files={'some': open('test_requests.py')},
+ data={'some': 'data'})
- self.assertEqual(post.status_code, 200)
+ self.assertEqual(post1.status_code, 200)
def test_POSTBIN_GET_POST_FILES_WITH_HEADERS(self):
url = service('post')
- post2 = requests.post(url,
+ post2 = post(url,
files={'some': open('test_requests.py')},
headers = {'User-Agent': 'requests-tests'})
for service in SERVICES:
- r = requests.get(service('status', '500'))
+ r = get(service('status', '500'))
self.assertEqual(bool(r), False)
- r = requests.get(service('/get'))
+ r = get(service('/get'))
self.assertEqual(bool(r), True)
for service in SERVICES:
- r = requests.get(service('status', '404'))
+ r = get(service('status', '404'))
# print r.status_code
# r.raise_for_status()
self.assertEqual(r.ok, False)
def test_status_raising(self):
- r = requests.get(httpbin('status', '404'))
+ r = get(httpbin('status', '404'))
self.assertRaises(HTTPError, r.raise_for_status)
- r = requests.get(httpbin('status', '200'))
+ r = get(httpbin('status', '200'))
self.assertFalse(r.error)
r.raise_for_status()
config = {'danger_mode': True}
args = [httpbin('status', '404')]
kwargs = dict(config=config)
- self.assertRaises(HTTPError, requests.get, *args, **kwargs)
+ self.assertRaises(HTTPError, get, *args, **kwargs)
- r = requests.get(httpbin('status', '200'))
+ r = get(httpbin('status', '200'))
self.assertEqual(r.status_code, 200)
def test_decompress_gzip(self):
- r = requests.get(httpbin('gzip'))
+ r = get(httpbin('gzip'))
r.content.decode('ascii')
def test_response_has_unicode_url(self):
url = service('get')
- response = requests.get(url)
+ response = get(url)
assert isinstance(response.url, str)
url = service('/get')
- requests.get(url, params={'foo': 'føø'})
- requests.get(url, params={'føø': 'føø'})
- requests.get(url, params={'føø': 'føø'})
- requests.get(url, params={'foo': 'foo'})
- requests.get(service('ø'), params={'foo': 'foo'})
+ get(url, params={'foo': 'føø'})
+ get(url, params={'føø': 'føø'})
+ get(url, params={'føø': 'føø'})
+ get(url, params={'foo': 'foo'})
+ get(service('ø'), params={'foo': 'foo'})
def test_httpauth_recursion(self):
http_auth = HTTPBasicAuth('user', 'BADpass')
for service in SERVICES:
- r = requests.get(service('basic-auth', 'user', 'pass'), auth=http_auth)
+ r = get(service('basic-auth', 'user', 'pass'), auth=http_auth)
self.assertEqual(r.status_code, 401)
for service in SERVICES:
- r = requests.post(service('post'), data=dict(test='fooaowpeuf'))
+ r = post(service('post'), data=dict(test='fooaowpeuf'))
self.assertEqual(r.status_code, 200)
self.assertEqual(r.headers['content-type'], 'application/json')
for service in SERVICES:
- r = requests.post(service('post'), data='fooaowpeuf')
+ r = post(service('post'), data='fooaowpeuf')
self.assertEqual(r.status_code, 200)
self.assertEqual(r.headers['content-type'], 'application/json')
for service in SERVICES:
- r = requests.post(service('post'), params=dict(test='fooaowpeuf'))
+ r = post(service('post'), params=dict(test='fooaowpeuf'))
self.assertEqual(r.status_code, 200)
self.assertEqual(r.headers['content-type'], 'application/json')
for service in SERVICES:
- r = requests.post(
+ r = post(
service('post'),
params=dict(test='fooaowpeuf'),
data=dict(test2="foobar"))
for service in SERVICES:
- r = requests.post(service('post'), data="foobar")
+ r = post(service('post'), data="foobar")
self.assertEqual(r.status_code, 200)
self.assertEqual(r.headers['content-type'], 'application/json')
# def test_idna(self):
- # r = requests.get(u'http://➡.ws/httpbin')
+ # r = get(u'http://➡.ws/httpbin')
# assert 'httpbin' in r.url
for service in SERVICES:
- r = requests.get(service('get'), params=dict(test=['foo','baz']))
+ r = get(service('get'), params=dict(test=['foo','baz']))
self.assertEqual(r.status_code, 200)
self.assertEqual(r.url, service('get?test=foo&test=baz'))
for service in SERVICES:
- r = requests.post(service('post'), params=dict(test=['foo','baz']))
+ r = post(service('post'), params=dict(test=['foo','baz']))
self.assertEqual(r.status_code, 200)
self.assertEqual(r.headers['content-type'], 'application/json')
self.assertEqual(r.url, service('post?test=foo&test=baz'))
for service in SERVICES:
- r = requests.post(
+ r = post(
service('post'),
params=dict(test=['foo','baz']),
data=dict(test2="foobar",test3=['foo','baz']))
for service in SERVICES:
- r = requests.get(service('redirect', '3'), allow_redirects=False)
+ r = get(service('redirect', '3'), allow_redirects=False)
self.assertEqual(r.status_code, 302)
self.assertEqual(len(r.history), 0)
for service in SERVICES:
- r = requests.head(service('redirect', '3'), allow_redirects=False)
+ r = head(service('redirect', '3'), allow_redirects=False)
self.assertEqual(r.status_code, 302)
self.assertEqual(len(r.history), 0)
for service in SERVICES:
- r = requests.get(service('redirect', '3'))
+ r = get(service('redirect', '3'))
self.assertEqual(r.status_code, 200)
self.assertEqual(len(r.history), 3)
for service in SERVICES:
- r = requests.get(service('relative-redirect', '3'))
+ r = get(service('relative-redirect', '3'))
self.assertEqual(r.status_code, 200)
self.assertEqual(len(r.history), 3)
def test_session_HTTP_200_OK_GET(self):
s = requests.session()
- r = s.get(httpbin('/get'))
+ r = get(httpbin('/get'), session=s)
self.assertEqual(r.status_code, 200)
s.headers = heads
# Make 2 requests from Session object, should send header both times
- r1 = s.get(httpbin('user-agent'))
+ r1 = get(httpbin('user-agent'), session=s)
assert heads['User-agent'] in r1.text
- r2 = s.get(httpbin('user-agent'))
+ r2 = get(httpbin('user-agent'), session=s)
assert heads['User-agent'] in r2.text
new_heads = {'User-agent': 'blah'}
- r3 = s.get(httpbin('user-agent'), headers=new_heads)
+ r3 = get(httpbin('user-agent'), headers=new_heads, session=s)
assert new_heads['User-agent'] in r3.text
self.assertEqual(r2.status_code, 200)
for service in SERVICES:
url = service('headers')
- response = requests.get(
+ response = get(
url = url,
hooks = {
'args': add_foo_header
for service in SERVICES:
url = service('headers')
- response = requests.get(
+ response = get(
url = url,
hooks = {
'args': [add_foo_header, add_bar_header]
# Internally dispatched cookies are sent.
_c = {'kenneth': 'reitz', 'bessie': 'monke'}
- r = s.get(httpbin('cookies'), cookies=_c)
- r = s.get(httpbin('cookies'))
+ r = get(httpbin('cookies'), cookies=_c, session=s)
+ r = get(httpbin('cookies'), session=s)
# Those cookies persist transparently.
c = json.loads(r.text).get('cookies')
assert c == _c
# Double check.
- r = s.get(httpbin('cookies'), cookies={})
+ r = get(httpbin('cookies'), cookies={}, session=s)
c = json.loads(r.text).get('cookies')
assert c == _c
# Remove a cookie by setting it's value to None.
- r = s.get(httpbin('cookies'), cookies={'bessie': None})
+ r = get(httpbin('cookies'), cookies={'bessie': None}, session=s)
c = json.loads(r.text).get('cookies')
del _c['bessie']
assert c == _c
# Test session-level cookies.
s = requests.session(cookies=_c)
- r = s.get(httpbin('cookies'))
+ r = get(httpbin('cookies'), session=s)
c = json.loads(r.text).get('cookies')
assert c == _c
# Have the server set a cookie.
- r = s.get(httpbin('cookies', 'set', 'k', 'v'), allow_redirects=True)
+ r = get(httpbin('cookies', 'set', 'k', 'v'), allow_redirects=True, session=s)
c = json.loads(r.text).get('cookies')
assert 'k' in c
# And server-set cookie persistience.
- r = s.get(httpbin('cookies'))
+ r = get(httpbin('cookies'), session=s)
c = json.loads(r.text).get('cookies')
assert 'k' in c
s.params = params
# Make 2 requests from Session object, should send header both times
- r1 = s.get(httpbin('get'))
+ r1 = get(httpbin('get'), session=s)
assert params['a'] in r1.text
params2 = {'b': 'b_test'}
- r2 = s.get(httpbin('get'), params=params2)
+ r2 = get(httpbin('get'), params=params2, session=s)
assert params['a'] in r2.text
assert params2['b'] in r2.text
params3 = {'b': 'b_test', 'a': None, 'c': 'c_test'}
- r3 = s.get(httpbin('get'), params=params3)
+ r3 = get(httpbin('get'), params=params3, session=s)
assert not params['a'] in r3.text
assert params3['b'] in r3.text
# this will fail.
try:
hah = 'http://somedomainthatclearlydoesntexistg.com'
- r = requests.get(hah, allow_redirects=False)
+ r = get(hah, allow_redirects=False)
except requests.ConnectionError:
pass # \o/
else:
config = {'safe_mode': True}
- r = requests.get(hah, allow_redirects=False, config=config)
+ r = get(hah, allow_redirects=False, config=config)
assert r.content == None
def test_cached_response(self):
- r1 = requests.get(httpbin('get'), prefetch=False)
+ r1 = get(httpbin('get'), prefetch=False)
assert not r1._content
assert r1.content
assert r1.text
- r2 = requests.get(httpbin('get'), prefetch=True)
+ r2 = get(httpbin('get'), prefetch=True)
assert r2._content
assert r2.content
assert r2.text
lines = (0, 2, 10, 100)
for i in lines:
- r = requests.get(httpbin('stream', str(i)), prefetch=False)
+ r = get(httpbin('stream', str(i)), prefetch=False)
lines = list(r.iter_lines())
len_lines = len(lines)
)
# Make a request and monkey-patch its contents
- r = requests.get(httpbin('get'))
+ r = get(httpbin('get'))
r.raw = StringIO(quote)
# Make sure iter_lines doesn't chop the trailing bit
# Safe mode creates empty responses for failed requests.
# Iterating on these responses should produce empty sequences
- r = safe.get('http://_/')
+ r = get('http://_/', session=safe)
self.assertEqual(list(r.iter_lines()), [])
assert isinstance(r.error, requests.exceptions.ConnectionError)
- r = safe.get('http://_/')
+ r = get('http://_/', session=safe)
self.assertEqual(list(r.iter_content()), [])
assert isinstance(r.error, requests.exceptions.ConnectionError)
# When not in safe mode, should raise Timeout exception
self.assertRaises(
requests.exceptions.Timeout,
- requests.get,
+ get,
httpbin('stream', '1000'), timeout=0.0001)
# In safe mode, should return a blank response
- r = requests.get(httpbin('stream', '1000'), timeout=0.0001,
+ r = get(httpbin('stream', '1000'), timeout=0.0001,
config=dict(safe_mode=True))
assert r.content is None
assert isinstance(r.error, requests.exceptions.Timeout)