mirror of
https://github.com/kevin1024/vcrpy.git
synced 2025-12-09 01:03:24 +00:00
105 lines
4.0 KiB
Python
105 lines
4.0 KiB
Python
# 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'
|
|
|
|
|
|
class TestHttpRequest(unittest.TestCase):
|
|
|
|
def tearDown(self):
|
|
try:
|
|
os.remove(TEST_CASSETTE_FILE)
|
|
except OSError:
|
|
pass
|
|
|
|
def test_response_code(self):
|
|
code = urllib2.urlopen('http://httpbin.org/').getcode()
|
|
with vcr.use_cassette(TEST_CASSETTE_FILE):
|
|
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://httpbin.org/').read()
|
|
with vcr.use_cassette(TEST_CASSETTE_FILE):
|
|
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://httpbin.org/').info().items()
|
|
self.assertEqual(headers, urllib2.urlopen('http://httpbin.org/').info().items())
|
|
|
|
def test_multiple_requests(self):
|
|
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://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):
|
|
|
|
def tearDown(self):
|
|
try:
|
|
os.remove(TEST_CASSETTE_FILE)
|
|
except OSError:
|
|
pass
|
|
|
|
def test_response_code(self):
|
|
code = urllib2.urlopen('https://httpbin.org/').getcode()
|
|
with vcr.use_cassette(TEST_CASSETTE_FILE):
|
|
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://httpbin.org/').read()
|
|
with vcr.use_cassette(TEST_CASSETTE_FILE):
|
|
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://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):
|
|
c1 = Cassette()
|
|
c1.requests = ['a','b','c']
|
|
c1.responses = ['d','e','f']
|
|
ser = c1.serialize()
|
|
c2 = Cassette(ser)
|
|
self.assertEqual(c1.requests,c2.requests)
|
|
self.assertEqual(c1.responses,c2.responses)
|
|
|
|
|
|
|
|
|
|
if __name__ == '__main__':
|
|
unittest.main()
|