diff --git a/tests/__init__.py b/tests/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/test.py b/tests/test_basic.py similarity index 90% rename from test.py rename to tests/test_basic.py index 10417ec..41b698e 100644 --- a/test.py +++ b/tests/test_basic.py @@ -5,7 +5,7 @@ import vcr from vcr.cassette import Cassette import urllib2 from urllib import urlencode -import json +from utils import assert_httpbin_responses_equal TEST_CASSETTE_FILE = 'cassettes/test_req.yaml' @@ -17,11 +17,6 @@ class TestHttpRequest(unittest.TestCase): except OSError: pass - def strip_origin(self, body): - body = json.loads(body) - del body['origin'] - return body - def test_response_code(self): code = urllib2.urlopen('http://httpbin.org/').getcode() with vcr.use_cassette(TEST_CASSETTE_FILE): @@ -42,18 +37,16 @@ class TestHttpRequest(unittest.TestCase): def test_multiple_requests(self): body1 = urllib2.urlopen('http://httpbin.org/').read() body2 = urllib2.urlopen('http://httpbin.org/get').read() - body2 = self.strip_origin(body2) with vcr.use_cassette(TEST_CASSETTE_FILE): self.assertEqual(body1, urllib2.urlopen('http://httpbin.org/').read()) new_body2 = urllib2.urlopen('http://httpbin.org/get').read() - new_body2 = self.strip_origin(new_body2) - self.assertEqual(body2, new_body2) + + assert_httpbin_responses_equal(body2, new_body2) self.assertEqual(body1, urllib2.urlopen('http://httpbin.org/').read()) new_body2 = urllib2.urlopen('http://httpbin.org/get').read() - new_body2 = self.strip_origin(new_body2) - self.assertEqual(body2, new_body2) + assert_httpbin_responses_equal(body2, new_body2) class TestHttps(unittest.TestCase): @@ -109,10 +102,6 @@ class TestCassette(unittest.TestCase): self.assertEqual(c1.requests, c2.requests) self.assertEqual(c1.responses, c2.responses) -try: - from test_requests import * -except ImportError: - pass if __name__ == '__main__': unittest.main() diff --git a/test_requests.py b/tests/test_requests.py similarity index 83% rename from test_requests.py rename to tests/test_requests.py index d458328..db90ed6 100644 --- a/test_requests.py +++ b/tests/test_requests.py @@ -2,18 +2,20 @@ import os import unittest import vcr -import requests +import pytest +from utils import assert_httpbin_responses_equal + +requests = pytest.importorskip("requests") TEST_CASSETTE_FILE = 'cassettes/test_req.yaml' - class TestRequestsGet(unittest.TestCase): def setUp(self): - self.unmolested_response = requests.get('http://httpbin.org/') + self.unmolested_response = requests.get('http://httpbin.org/get') with vcr.use_cassette(TEST_CASSETTE_FILE): - self.initial_response = requests.get('http://httpbin.org/') - self.cached_response = requests.get('http://httpbin.org/') + self.initial_response = requests.get('http://httpbin.org/get') + self.cached_response = requests.get('http://httpbin.org/get') def tearDown(self): try: @@ -34,10 +36,10 @@ class TestRequestsGet(unittest.TestCase): self.assertEqual(self.unmolested_response.headers['content-type'], self.cached_response.headers['content-type']) def test_initial_response_text(self): - self.assertEqual(self.unmolested_response.text, self.initial_response.text) + assert_httpbin_responses_equal(self.unmolested_response.text, self.initial_response.text) def test_cached_response_text(self): - self.assertEqual(self.unmolested_response.text, self.cached_response.text) + assert_httpbin_responses_equal(self.unmolested_response.text, self.cached_response.text) class TestRequestsAuth(unittest.TestCase): @@ -64,7 +66,6 @@ class TestRequestsAuth(unittest.TestCase): auth_fail_cached = requests.get('https://httpbin.org/basic-auth/user/passwd', auth=('user', 'passwdzzz')) self.assertNotEqual(self.unmolested_response.status_code, auth_fail_cached.status_code) - class TestRequestsPost(unittest.TestCase): def setUp(self): @@ -81,10 +82,10 @@ class TestRequestsPost(unittest.TestCase): pass def test_initial_post_response_text(self): - self.assertEqual(self.unmolested_response.text, self.initial_response.text) + assert_httpbin_responses_equal(self.unmolested_response.text, self.initial_response.text) def test_cached_post_response_text(self): - self.assertEqual(self.unmolested_response.text, self.cached_response.text) + assert_httpbin_responses_equal(self.unmolested_response.text, self.cached_response.text) class TestRequestsHTTPS(unittest.TestCase): @@ -103,7 +104,7 @@ class TestRequestsHTTPS(unittest.TestCase): pass def test_initial_https_response_text(self): - self.assertEqual(self.unmolested_response.text, self.initial_response.text) + assert_httpbin_responses_equal(self.unmolested_response.text, self.initial_response.text) def test_cached_https_response_text(self): - self.assertEqual(self.unmolested_response.text, self.cached_response.text) + assert_httpbin_responses_equal(self.unmolested_response.text, self.cached_response.text) diff --git a/tests/utils.py b/tests/utils.py new file mode 100644 index 0000000..09f5733 --- /dev/null +++ b/tests/utils.py @@ -0,0 +1,13 @@ +import json + +def assert_httpbin_responses_equal(body1, body2): + """ + httpbin.org returns a different `origin` header + each time, so strip this out since it makes testing + difficult. + """ + body1, body2 = json.loads(body1), json.loads(body2) + del body1['origin'] + del body2['origin'] + assert body1 == body2 + diff --git a/tox.ini b/tox.ini index f2f6cce..e3fd915 100644 --- a/tox.ini +++ b/tox.ini @@ -8,24 +8,28 @@ envlist = py26, py27, pypy, py26requests, py27requests, pypyrequests [testenv] commands = - python test.py + py.test deps = + pytest PyYAML [testenv:py26requests] basepython = python2.6 deps = + pytest PyYAML requests [testenv:py27requests] basepython = python2.7 deps = + pytest PyYAML requests [testenv:pypyrequests] basepython = pypy deps = + pytest PyYAML requests