1
0
mirror of https://github.com/kevin1024/vcrpy.git synced 2025-12-09 01:03:24 +00:00

add tests for GET/POST/unicode, use httpbin (which is pretty sweet)

This commit is contained in:
Kevin McCarthy
2012-06-30 15:46:58 -10:00
parent 9932de872d
commit 7e228ef467

64
test.py
View File

@@ -1,8 +1,10 @@
# coding=utf-8
import os
import unittest
import vcr
from vcr.cassette import Cassette
import urllib2
from urllib import urlencode
TEST_CASSETTE_FILE = 'test/test_req.yaml'
@@ -16,30 +18,30 @@ class TestHttpRequest(unittest.TestCase):
pass
def test_response_code(self):
code = urllib2.urlopen('http://www.iana.org/domains/example/').getcode()
code = urllib2.urlopen('http://httpbin.org/').getcode()
with vcr.use_cassette(TEST_CASSETTE_FILE):
self.assertEqual(code, urllib2.urlopen('http://www.iana.org/domains/example/').getcode())
self.assertEqual(code, urllib2.urlopen('http://www.iana.org/domains/example/').getcode())
self.assertEqual(code, urllib2.urlopen('http://httpbin.org/').getcode())
self.assertEqual(code, urllib2.urlopen('http://httpbin.org/').getcode())
def test_response_body(self):
body = urllib2.urlopen('http://www.iana.org/domains/example/').read()
body = urllib2.urlopen('http://httpbin.org/').read()
with vcr.use_cassette(TEST_CASSETTE_FILE):
self.assertEqual(body, urllib2.urlopen('http://www.iana.org/domains/example/').read())
self.assertEqual(body, urllib2.urlopen('http://www.iana.org/domains/example/').read())
self.assertEqual(body, urllib2.urlopen('http://httpbin.org/').read())
self.assertEqual(body, urllib2.urlopen('http://httpbin.org/').read())
def test_response_headers(self):
with vcr.use_cassette(TEST_CASSETTE_FILE):
headers = urllib2.urlopen('http://www.iana.org/domains/example/').info().items()
self.assertEqual(headers, urllib2.urlopen('http://www.iana.org/domains/example/').info().items())
headers = urllib2.urlopen('http://httpbin.org/').info().items()
self.assertEqual(headers, urllib2.urlopen('http://httpbin.org/').info().items())
def test_multiple_requests(self):
body1 = urllib2.urlopen('http://www.iana.org/domains/example/').read()
body2 = urllib2.urlopen('http://api.twitter.com/1/legal/tos.json').read()
body1 = urllib2.urlopen('http://httpbin.org/').read()
body2 = urllib2.urlopen('http://httpbin.org/get').read()
with vcr.use_cassette(TEST_CASSETTE_FILE):
self.assertEqual(body1, urllib2.urlopen('http://www.iana.org/domains/example/').read())
self.assertEqual(body2, urllib2.urlopen('http://api.twitter.com/1/legal/tos.json').read())
self.assertEqual(body1, urllib2.urlopen('http://www.iana.org/domains/example/').read())
self.assertEqual(body2, urllib2.urlopen('http://api.twitter.com/1/legal/tos.json').read())
self.assertEqual(body1, urllib2.urlopen('http://httpbin.org/').read())
self.assertEqual(body2, urllib2.urlopen('http://httpbin.org/get').read())
self.assertEqual(body1, urllib2.urlopen('http://httpbin.org/').read())
self.assertEqual(body2, urllib2.urlopen('http://httpbin.org/get').read())
class TestHttps(unittest.TestCase):
@@ -51,21 +53,39 @@ class TestHttps(unittest.TestCase):
pass
def test_response_code(self):
code = urllib2.urlopen('https://api.twitter.com/1/legal/tos.json').getcode()
code = urllib2.urlopen('https://httpbin.org/').getcode()
with vcr.use_cassette(TEST_CASSETTE_FILE):
self.assertEqual(code, urllib2.urlopen('https://api.twitter.com/1/legal/tos.json').getcode())
self.assertEqual(code, urllib2.urlopen('https://api.twitter.com/1/legal/tos.json').getcode())
self.assertEqual(code, urllib2.urlopen('https://httpbin.org/').getcode())
self.assertEqual(code, urllib2.urlopen('https://httpbin.org/').getcode())
def test_response_body(self):
body = urllib2.urlopen('https://api.twitter.com/1/legal/tos.json').read()
body = urllib2.urlopen('https://httpbin.org/').read()
with vcr.use_cassette(TEST_CASSETTE_FILE):
self.assertEqual(body, urllib2.urlopen('https://api.twitter.com/1/legal/tos.json').read())
self.assertEqual(body, urllib2.urlopen('https://api.twitter.com/1/legal/tos.json').read())
self.assertEqual(body, urllib2.urlopen('https://httpbin.org/').read())
self.assertEqual(body, urllib2.urlopen('https://httpbin.org/').read())
def test_response_headers(self):
with vcr.use_cassette(TEST_CASSETTE_FILE):
headers = urllib2.urlopen('https://api.twitter.com/1/legal/tos.json').info().items()
self.assertEqual(headers, urllib2.urlopen('https://api.twitter.com/1/legal/tos.json').info().items())
headers = urllib2.urlopen('https://httpbin.org/').info().items()
self.assertEqual(headers, urllib2.urlopen('https://httpbin.org/').info().items())
def test_get_data(self):
TEST_DATA = urlencode({'some':1,'data':'here'})
with vcr.use_cassette(TEST_CASSETTE_FILE):
body = urllib2.urlopen('https://httpbin.org/get?' + TEST_DATA).read()
self.assertEqual(body, urllib2.urlopen('https://httpbin.org/get?' + TEST_DATA).read())
def test_post_data(self):
TEST_DATA = urlencode({'some':1,'data':'here'})
with vcr.use_cassette(TEST_CASSETTE_FILE):
body = urllib2.urlopen('https://httpbin.org/post',TEST_DATA).read()
self.assertEqual(body, urllib2.urlopen('https://httpbin.org/post',TEST_DATA).read())
def test_post_unicode(self):
TEST_DATA = urlencode({'snowman':u''.encode('utf-8')})
with vcr.use_cassette(TEST_CASSETTE_FILE):
body = urllib2.urlopen('https://httpbin.org/post',TEST_DATA).read()
self.assertEqual(body, urllib2.urlopen('https://httpbin.org/post',TEST_DATA).read())
class TestCassette(unittest.TestCase):
def test_serialize_cassette(self):