From d00c27e2444dd8abf4f6c8d8b5bd4be8fad86207 Mon Sep 17 00:00:00 2001 From: Kevin McCarthy Date: Sun, 11 Aug 2013 18:09:56 -1000 Subject: [PATCH] refactor tests a bit --- tests/assertions.py | 7 +++++ tests/integration/test_requests.py | 45 +++++++++++------------------- tests/integration/test_urllib2.py | 33 ++++++++-------------- 3 files changed, 36 insertions(+), 49 deletions(-) create mode 100644 tests/assertions.py diff --git a/tests/assertions.py b/tests/assertions.py new file mode 100644 index 0000000..78044b6 --- /dev/null +++ b/tests/assertions.py @@ -0,0 +1,7 @@ +def assert_cassette_empty(cass): + assert len(cass) == 0 + assert cass.play_count == 0 + +def assert_cassette_has_one_response(cass): + assert len(cass) == 1 + assert cass.play_count == 1 diff --git a/tests/integration/test_requests.py b/tests/integration/test_requests.py index b761c27..cca87d8 100644 --- a/tests/integration/test_requests.py +++ b/tests/integration/test_requests.py @@ -9,6 +9,8 @@ import pytest import vcr +from assertions import assert_cassette_empty, assert_cassette_has_one_response + requests = pytest.importorskip("requests") @pytest.fixture(params=["https","http"]) @@ -24,36 +26,30 @@ def test_status_code(scheme, tmpdir): url = scheme + '://httpbin.org/' with vcr.use_cassette(str(tmpdir.join('atts.yaml'))) as cass: # Ensure that this is empty to begin with - assert len(cass) == 0 - assert cass.play_count == 0 + assert_cassette_empty(cass) assert requests.get(url).status_code == requests.get(url).status_code # Ensure that we've now cached a single response - assert len(cass) == 1 - assert cass.play_count == 1 + assert_cassette_has_one_response(cass) def test_headers(scheme, tmpdir): '''Ensure that we can read the headers back''' url = scheme + '://httpbin.org/' with vcr.use_cassette(str(tmpdir.join('headers.yaml'))) as cass: # Ensure that this is empty to begin with - assert len(cass) == 0 - assert cass.play_count == 0 + assert_cassette_empty(cass) assert requests.get(url).headers == requests.get(url).headers # Ensure that we've now cached a single response - assert len(cass) == 1 - assert cass.play_count == 1 + assert_cassette_has_one_response(cass) def test_body(tmpdir, scheme): '''Ensure the responses are all identical enough''' url = scheme + '://httpbin.org/bytes/1024' with vcr.use_cassette(str(tmpdir.join('body.yaml'))) as cass: # Ensure that this is empty to begin with - assert len(cass) == 0 - assert cass.play_count == 0 + assert_cassette_empty(cass) assert requests.get(url).content == requests.get(url).content # Ensure that we've now cached a single response - assert len(cass) == 1 - assert cass.play_count == 1 + assert_cassette_has_one_response(cass) def test_auth(tmpdir, scheme): '''Ensure that we can handle basic auth''' @@ -61,15 +57,13 @@ def test_auth(tmpdir, scheme): url = scheme + '://httpbin.org/basic-auth/user/passwd' with vcr.use_cassette(str(tmpdir.join('auth.yaml'))) as cass: # Ensure that this is empty to begin with - assert len(cass) == 0 - assert cass.play_count == 0 + assert_cassette_empty(cass) one = requests.get(url, auth=auth) two = requests.get(url, auth=auth) assert one.content == two.content assert one.status_code == two.status_code # Ensure that we've now cached a single response - assert len(cass) == 1 - assert cass.play_count == 1 + assert_cassette_has_one_response(cass) def test_auth_failed(tmpdir, scheme): '''Ensure that we can save failed auth statuses''' @@ -77,15 +71,13 @@ def test_auth_failed(tmpdir, scheme): url = scheme + '://httpbin.org/basic-auth/user/passwd' with vcr.use_cassette(str(tmpdir.join('auth-failed.yaml'))) as cass: # Ensure that this is empty to begin with - assert len(cass) == 0 - assert cass.play_count == 0 + assert_cassette_empty(cass) one = requests.get(url, auth=auth) two = requests.get(url, auth=auth) assert one.content == two.content assert one.status_code == two.status_code == 401 # Ensure that we've now cached a single response - assert len(cass) == 1 - assert cass.play_count == 1 + assert_cassette_has_one_response(cass) def test_post(tmpdir, scheme): '''Ensure that we can post and cache the results''' @@ -93,22 +85,19 @@ def test_post(tmpdir, scheme): url = scheme + '://httpbin.org/post' with vcr.use_cassette(str(tmpdir.join('redirect.yaml'))) as cass: # Ensure that this is empty to begin with - assert len(cass) == 0 - assert cass.play_count == 0 + assert_cassette_empty(cass) assert requests.post(url, data).content == requests.post(url, data).content # Ensure that we've now cached a single response - assert len(cass) == 1 - assert cass.play_count == 1 + assert_cassette_has_one_response(cass) def test_redirects(tmpdir, scheme): '''Ensure that we can handle redirects''' url = scheme + '://httpbin.org/redirect-to?url=bytes/1024' with vcr.use_cassette(str(tmpdir.join('redirect.yaml'))) as cass: # Ensure that this is empty to begin with - assert len(cass) == 0 - assert cass.play_count == 0 + assert_cassette_empty(cass) assert requests.get(url).content == requests.get(url).content - # Ensure that we've now cached /two/ responses. One for the redirect + # Ensure that we've now cached *two* responses. One for the redirect # and one for the final fetch assert len(cass) == 2 assert cass.play_count == 2 @@ -121,6 +110,6 @@ def test_cross_scheme(tmpdir, scheme): with vcr.use_cassette(str(tmpdir.join('cross_scheme.yaml'))) as cass: requests.get('https://httpbin.org/') requests.get('http://httpbin.org/') - assert len(cass) == 2 assert cass.play_count == 0 + assert len(cass) == 2 diff --git a/tests/integration/test_urllib2.py b/tests/integration/test_urllib2.py index f0aa8e2..1288c34 100644 --- a/tests/integration/test_urllib2.py +++ b/tests/integration/test_urllib2.py @@ -10,6 +10,7 @@ import pytest # Internal imports import vcr +from assertions import assert_cassette_empty, assert_cassette_has_one_response @pytest.fixture(params=["https","http"]) def scheme(request): @@ -23,35 +24,30 @@ def test_response_code(scheme, tmpdir): url = scheme + '://httpbin.org/' with vcr.use_cassette(str(tmpdir.join('atts.yaml'))) as cass: # Ensure that this is empty to begin with - assert len(cass) == 0 - assert cass.play_count == 0 + assert_cassette_empty(cass) assert urllib2.urlopen(url).getcode() == urllib2.urlopen(url).getcode() # Ensure that we've now cached a single response - assert len(cass) == 1 - assert cass.play_count == 1 + assert_cassette_has_one_response(cass) def test_random_body(scheme, tmpdir): '''Ensure we can read the content, and that it's served from cache''' url = scheme + '://httpbin.org/bytes/1024' with vcr.use_cassette(str(tmpdir.join('body.yaml'))) as cass: # Ensure that this is empty to begin with - assert len(cass) == 0 - assert cass.play_count == 0 + assert_cassette_empty(cass) assert urllib2.urlopen(url).read() == urllib2.urlopen(url).read() # Ensure that we've now cached a single response - assert len(cass) == 1 - assert cass.play_count == 1 + assert_cassette_has_one_response(cass) def test_response_headers(scheme, tmpdir): '''Ensure we can get information from the response''' url = scheme + '://httpbin.org/' with vcr.use_cassette(str(tmpdir.join('headers.yaml'))) as cass: # Ensure that this is empty to begin with - assert len(cass) == 0 - assert cass.play_count == 0 + assert_cassette_empty(cass) assert urllib2.urlopen(url).info().items() == urllib2.urlopen(url).info().items() # Ensure that we've now cached a single response - assert len(cass) == 1 + assert_cassette_has_one_response(cass) def test_multiple_requests(scheme, tmpdir): '''Ensure that we can cache multiple requests''' @@ -75,8 +71,7 @@ def test_get_data(scheme, tmpdir): url = scheme + '://httpbin.org/get?' + data with vcr.use_cassette(str(tmpdir.join('get_data.yaml'))) as cass: # Ensure that this is empty to begin with - assert len(cass) == 0 - assert cass.play_count == 0 + assert_cassette_empty(cass) res1 = urllib2.urlopen(url).read() res2 = urllib2.urlopen(url).read() assert res1 == res2 @@ -90,14 +85,12 @@ def test_post_data(scheme, tmpdir): url = scheme + '://httpbin.org/post' with vcr.use_cassette(str(tmpdir.join('post_data.yaml'))) as cass: # Ensure that this is empty to begin with - assert len(cass) == 0 - assert cass.play_count == 0 + assert_cassette_empty(cass) res1 = urllib2.urlopen(url, data).read() res2 = urllib2.urlopen(url, data).read() assert res1 == res2 # Ensure that we've now cached a single response - assert len(cass) == 1 - assert cass.play_count == 1 + assert_cassette_has_one_response(cass) def test_post_unicode_data(scheme, tmpdir): '''Ensure that it works when posting unicode data''' @@ -105,14 +98,12 @@ def test_post_unicode_data(scheme, tmpdir): url = scheme + '://httpbin.org/post' with vcr.use_cassette(str(tmpdir.join('post_data.yaml'))) as cass: # Ensure that this is empty to begin with - assert len(cass) == 0 - assert cass.play_count == 0 + assert_cassette_empty(cass) res1 = urllib2.urlopen(url, data).read() res2 = urllib2.urlopen(url, data).read() assert res1 == res2 # Ensure that we've now cached a single response - assert len(cass) == 1 - assert cass.play_count == 1 + assert_cassette_has_one_response(cass) def test_cross_scheme(tmpdir): '''Ensure that requests between schemes are treated separately'''