mirror of
https://github.com/kevin1024/vcrpy.git
synced 2025-12-09 17:15:35 +00:00
@@ -13,6 +13,7 @@ env:
|
|||||||
- TOX_SUFFIX="requests25"
|
- TOX_SUFFIX="requests25"
|
||||||
- TOX_SUFFIX="requests26"
|
- TOX_SUFFIX="requests26"
|
||||||
- TOX_SUFFIX="requests27"
|
- TOX_SUFFIX="requests27"
|
||||||
|
- TOX_SUFFIX="requests213"
|
||||||
- TOX_SUFFIX="requests1"
|
- TOX_SUFFIX="requests1"
|
||||||
- TOX_SUFFIX="httplib2"
|
- TOX_SUFFIX="httplib2"
|
||||||
- TOX_SUFFIX="boto"
|
- TOX_SUFFIX="boto"
|
||||||
@@ -34,10 +35,14 @@ matrix:
|
|||||||
python: 3.3
|
python: 3.3
|
||||||
- env: TOX_SUFFIX="boto"
|
- env: TOX_SUFFIX="boto"
|
||||||
python: 3.4
|
python: 3.4
|
||||||
|
- env: TOX_SUFFIX="boto"
|
||||||
|
python: 3.6
|
||||||
- env: TOX_SUFFIX="requests1"
|
- env: TOX_SUFFIX="requests1"
|
||||||
python: 3.4
|
python: 3.4
|
||||||
- env: TOX_SUFFIX="requests1"
|
- env: TOX_SUFFIX="requests1"
|
||||||
python: 3.5
|
python: 3.5
|
||||||
|
- env: TOX_SUFFIX="requests1"
|
||||||
|
python: 3.6
|
||||||
- env: TOX_SUFFIX="aiohttp"
|
- env: TOX_SUFFIX="aiohttp"
|
||||||
python: 2.6
|
python: 2.6
|
||||||
- env: TOX_SUFFIX="aiohttp"
|
- env: TOX_SUFFIX="aiohttp"
|
||||||
@@ -54,6 +59,7 @@ python:
|
|||||||
- 3.3
|
- 3.3
|
||||||
- 3.4
|
- 3.4
|
||||||
- 3.5
|
- 3.5
|
||||||
|
- 3.6
|
||||||
- pypy
|
- pypy
|
||||||
- pypy3
|
- pypy3
|
||||||
install:
|
install:
|
||||||
|
|||||||
@@ -4,8 +4,8 @@ import pytest
|
|||||||
import vcr
|
import vcr
|
||||||
from assertions import assert_cassette_empty, assert_is_json
|
from assertions import assert_cassette_empty, assert_is_json
|
||||||
|
|
||||||
|
|
||||||
requests = pytest.importorskip("requests")
|
requests = pytest.importorskip("requests")
|
||||||
|
from requests.exceptions import ConnectionError # noqa E402
|
||||||
|
|
||||||
|
|
||||||
def test_status_code(httpbin_both, tmpdir):
|
def test_status_code(httpbin_both, tmpdir):
|
||||||
@@ -100,11 +100,26 @@ def test_post(tmpdir, httpbin_both):
|
|||||||
assert req1 == req2
|
assert req1 == req2
|
||||||
|
|
||||||
|
|
||||||
def test_post_chunked_binary(tmpdir, httpbin_both):
|
def test_post_chunked_binary(tmpdir, httpbin):
|
||||||
'''Ensure that we can send chunked binary without breaking while trying to concatenate bytes with str.'''
|
'''Ensure that we can send chunked binary without breaking while trying to concatenate bytes with str.'''
|
||||||
data1 = iter([b'data', b'to', b'send'])
|
data1 = iter([b'data', b'to', b'send'])
|
||||||
data2 = iter([b'data', b'to', b'send'])
|
data2 = iter([b'data', b'to', b'send'])
|
||||||
url = httpbin_both.url + '/post'
|
url = httpbin.url + '/post'
|
||||||
|
with vcr.use_cassette(str(tmpdir.join('requests.yaml'))):
|
||||||
|
req1 = requests.post(url, data1).content
|
||||||
|
|
||||||
|
with vcr.use_cassette(str(tmpdir.join('requests.yaml'))):
|
||||||
|
req2 = requests.post(url, data2).content
|
||||||
|
|
||||||
|
assert req1 == req2
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.xfail('sys.version_info >= (3, 6)', strict=True, raises=ConnectionError)
|
||||||
|
def test_post_chunked_binary_secure(tmpdir, httpbin_secure):
|
||||||
|
'''Ensure that we can send chunked binary without breaking while trying to concatenate bytes with str.'''
|
||||||
|
data1 = iter([b'data', b'to', b'send'])
|
||||||
|
data2 = iter([b'data', b'to', b'send'])
|
||||||
|
url = httpbin_secure.url + '/post'
|
||||||
with vcr.use_cassette(str(tmpdir.join('requests.yaml'))):
|
with vcr.use_cassette(str(tmpdir.join('requests.yaml'))):
|
||||||
req1 = requests.post(url, data1).content
|
req1 = requests.post(url, data1).content
|
||||||
print(req1)
|
print(req1)
|
||||||
|
|||||||
15
tox.ini
15
tox.ini
@@ -1,5 +1,5 @@
|
|||||||
[tox]
|
[tox]
|
||||||
envlist = {py26,py27,py33,py34,pypy,pypy3}-{flakes,requests27,requests26,requests25,requests24,requests23,requests22,requests1,httplib2,urllib317,urllib319,urllib3110,tornado3,tornado4,boto,boto3,aiohttp}
|
envlist = {py26,py27,py33,py34,py35,py36,pypy,pypy3}-{flakes,requests213,requests27,requests26,requests25,requests24,requests23,requests22,requests1,httplib2,urllib317,urllib319,urllib3110,tornado3,tornado4,boto,boto3,aiohttp}
|
||||||
|
|
||||||
[testenv:flakes]
|
[testenv:flakes]
|
||||||
skipsdist = True
|
skipsdist = True
|
||||||
@@ -20,6 +20,7 @@ deps =
|
|||||||
pytest-httpbin
|
pytest-httpbin
|
||||||
PyYAML
|
PyYAML
|
||||||
requests1: requests==1.2.3
|
requests1: requests==1.2.3
|
||||||
|
requests213: requests==2.13.0
|
||||||
requests27: requests==2.7.0
|
requests27: requests==2.7.0
|
||||||
requests26: requests==2.6.0
|
requests26: requests==2.6.0
|
||||||
requests25: requests==2.5.0
|
requests25: requests==2.5.0
|
||||||
@@ -30,12 +31,12 @@ deps =
|
|||||||
urllib317: urllib3==1.7.1
|
urllib317: urllib3==1.7.1
|
||||||
urllib319: urllib3==1.9.1
|
urllib319: urllib3==1.9.1
|
||||||
urllib3110: urllib3==1.10.2
|
urllib3110: urllib3==1.10.2
|
||||||
{py26,py27,py33,py34,pypy}-tornado3: tornado>=3,<4
|
{py26,py27,py33,py34,py35,py36,pypy}-tornado3: tornado>=3,<4
|
||||||
{py26,py27,py33,py34,pypy}-tornado4: tornado>=4,<5
|
{py26,py27,py33,py34,py35,py36,pypy}-tornado4: tornado>=4,<5
|
||||||
{py26,py27,py33,py34,pypy}-tornado3: pytest-tornado
|
{py26,py27,py33,py34,py35,py36,pypy}-tornado3: pytest-tornado
|
||||||
{py26,py27,py33,py34,pypy}-tornado4: pytest-tornado
|
{py26,py27,py33,py34,py35,py36,pypy}-tornado4: pytest-tornado
|
||||||
{py26,py27,py33,py34}-tornado3: pycurl
|
{py26,py27,py33,py34,py35,py36}-tornado3: pycurl
|
||||||
{py26,py27,py33,py34}-tornado4: pycurl
|
{py26,py27,py33,py34,py35,py36}-tornado4: pycurl
|
||||||
boto: boto
|
boto: boto
|
||||||
boto3: boto3
|
boto3: boto3
|
||||||
aiohttp: aiohttp
|
aiohttp: aiohttp
|
||||||
|
|||||||
@@ -153,7 +153,7 @@ class VCRConnection(object):
|
|||||||
)
|
)
|
||||||
return uri.replace(prefix, '', 1)
|
return uri.replace(prefix, '', 1)
|
||||||
|
|
||||||
def request(self, method, url, body=None, headers=None):
|
def request(self, method, url, body=None, headers=None, *args, **kwargs):
|
||||||
'''Persist the request metadata in self._vcr_request'''
|
'''Persist the request metadata in self._vcr_request'''
|
||||||
self._vcr_request = Request(
|
self._vcr_request = Request(
|
||||||
method=method,
|
method=method,
|
||||||
@@ -335,6 +335,11 @@ class VCRConnection(object):
|
|||||||
super(VCRConnection, self).__setattr__(name, value)
|
super(VCRConnection, self).__setattr__(name, value)
|
||||||
|
|
||||||
|
|
||||||
|
for k, v in HTTPConnection.__dict__.items():
|
||||||
|
if isinstance(v, staticmethod):
|
||||||
|
setattr(VCRConnection, k, v)
|
||||||
|
|
||||||
|
|
||||||
class VCRHTTPConnection(VCRConnection):
|
class VCRHTTPConnection(VCRConnection):
|
||||||
'''A Mocked class for HTTP requests'''
|
'''A Mocked class for HTTP requests'''
|
||||||
_baseclass = HTTPConnection
|
_baseclass = HTTPConnection
|
||||||
|
|||||||
Reference in New Issue
Block a user