Skip to content

Commit ad8d116

Browse files
authored
Use Mocketizer() as a context manager (#69)
* Use Mocketizer() as a context manager.
1 parent a52c7f6 commit ad8d116

File tree

3 files changed

+17
-15
lines changed

3 files changed

+17
-15
lines changed

mocket/__init__.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
try:
22
# Py2
3-
from mocket import mocketize, Mocket, MocketEntry
3+
from mocket import mocketize, Mocket, MocketEntry, Mocketizer
44
except ImportError:
55
# Py3
6-
from mocket.mocket import mocketize, Mocket, MocketEntry
6+
from mocket.mocket import mocketize, Mocket, MocketEntry, Mocketizer
77

8-
__all__ = (mocketize, Mocket, MocketEntry)
8+
__all__ = (mocketize, Mocket, MocketEntry, Mocketizer)
99

1010
__version__ = '2.2.0'

mocket/mocket.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -463,17 +463,19 @@ def get_response(self):
463463

464464

465465
class Mocketizer(object):
466-
def __init__(self, instance, namespace=None, truesocket_recording_dir=None):
466+
def __init__(self, instance=None, namespace=None, truesocket_recording_dir=None):
467467
self.instance = instance
468468
self.truesocket_recording_dir = truesocket_recording_dir
469469
self.namespace = namespace or text_type(id(self))
470470

471471
def __enter__(self):
472472
Mocket.enable(namespace=self.namespace, truesocket_recording_dir=self.truesocket_recording_dir)
473-
self.check_and_call('mocketize_setup')
473+
if self.instance:
474+
self.check_and_call('mocketize_setup')
474475

475476
def __exit__(self, type, value, tb):
476-
self.check_and_call('mocketize_teardown')
477+
if self.instance:
478+
self.check_and_call('mocketize_teardown')
477479
Mocket.disable()
478480
Mocket.reset()
479481

tests/main/test_mocket.py

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
import pytest
66

7-
from mocket import Mocket, mocketize, MocketEntry
7+
from mocket import Mocket, mocketize, MocketEntry, Mocketizer
88
from mocket.compat import encode_to_bytes
99

1010

@@ -75,7 +75,6 @@ def test_empty_getresponse(self):
7575
entry = MocketEntry(('localhost', 8080), [])
7676
self.assertEqual(entry.get_response(), encode_to_bytes(''))
7777

78-
@mocketize
7978
def test_subsequent_recv_requests_have_correct_length(self):
8079
Mocket.register(
8180
MocketEntry(
@@ -86,13 +85,14 @@ def test_subsequent_recv_requests_have_correct_length(self):
8685
]
8786
)
8887
)
89-
_so = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
90-
_so.connect(('localhost', 80))
91-
_so.sendall(b'first\r\n')
92-
assert _so.recv(4096) == b'Long payload'
93-
_so.sendall(b'second\r\n')
94-
assert _so.recv(4096) == b'Short'
95-
_so.close()
88+
with Mocketizer():
89+
_so = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
90+
_so.connect(('localhost', 80))
91+
_so.sendall(b'first\r\n')
92+
assert _so.recv(4096) == b'Long payload'
93+
_so.sendall(b'second\r\n')
94+
assert _so.recv(4096) == b'Short'
95+
_so.close()
9696

9797

9898
class MocketizeTestCase(TestCase):

0 commit comments

Comments
 (0)