From 5e05587ea069c46e83d6f8317e6d05b3551cef05 Mon Sep 17 00:00:00 2001 From: Kevin McCarthy Date: Mon, 3 Sep 2012 15:13:04 -1000 Subject: [PATCH] test requests GET / POST with VCR --- .travis.yml | 2 +- test.py | 55 ++++++++++++++++++++++++++++++++++++++++++- test_requirements.txt | 2 ++ tox.ini | 1 + 4 files changed, 58 insertions(+), 2 deletions(-) create mode 100644 test_requirements.txt diff --git a/.travis.yml b/.travis.yml index 1938428..1d80456 100644 --- a/.travis.yml +++ b/.travis.yml @@ -3,5 +3,5 @@ python: - 2.6 - 2.7 - pypy -install: pip install -r requirements.txt --use-mirrors +install: pip install -r test_requirements.txt --use-mirrors script: python test.py diff --git a/test.py b/test.py index c8e926d..6211aaf 100644 --- a/test.py +++ b/test.py @@ -5,10 +5,10 @@ import vcr from vcr.cassette import Cassette import urllib2 from urllib import urlencode +import requests TEST_CASSETTE_FILE = 'test/test_req.yaml' - class TestHttpRequest(unittest.TestCase): def tearDown(self): @@ -98,5 +98,58 @@ class TestCassette(unittest.TestCase): self.assertEqual(c1.requests, c2.requests) self.assertEqual(c1.responses, c2.responses) +class TestRequestsGet(unittest.TestCase): + + def setUp(self): + self.unmolested_response = requests.get('http://httpbin.org/') + with vcr.use_cassette(TEST_CASSETTE_FILE): + self.initial_response = requests.get('http://httpbin.org/') + self.cached_response = requests.get('http://httpbin.org/') + + def tearDown(self): + try: + os.remove(TEST_CASSETTE_FILE) + except OSError: + pass + + def test_initial_response_code(self): + self.assertEqual(self.unmolested_response.status_code, self.initial_response.status_code) + + def test_cached_response_code(self): + self.assertEqual(self.unmolested_response.status_code, self.cached_response.status_code) + + def test_initial_response_headers(self): + self.assertEqual(self.unmolested_response.headers['content-type'], self.initial_response.headers['content-type']) + + def test_cached_response_headers(self): + 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) + + def test_cached_response_text(self): + self.assertEqual(self.unmolested_response.text, self.cached_response.text) + +class TestRequestsPost(unittest.TestCase): + def setUp(self): + payload = {'key1': 'value1', 'key2': 'value2'} + self.unmolested_response = requests.post('http://httpbin.org/post', payload) + with vcr.use_cassette(TEST_CASSETTE_FILE): + self.initial_response = requests.post('http://httpbin.org/post', payload) + self.cached_response = requests.post('http://httpbin.org/post', payload) + + def tearDown(self): + try: + os.remove(TEST_CASSETTE_FILE) + except OSError: + pass + + def test_initial_post_response_text(self): + self.assertEqual(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) + + if __name__ == '__main__': unittest.main() diff --git a/test_requirements.txt b/test_requirements.txt new file mode 100644 index 0000000..6c9fdba --- /dev/null +++ b/test_requirements.txt @@ -0,0 +1,2 @@ +PyYAML +requests diff --git a/tox.ini b/tox.ini index be64dab..7205f73 100644 --- a/tox.ini +++ b/tox.ini @@ -11,3 +11,4 @@ commands = python test.py deps = PyYAML + requests