Skip to content
This repository was archived by the owner on Mar 9, 2026. It is now read-only.

Commit 07cf4f0

Browse files
committed
add mock message generator
1 parent de4eac6 commit 07cf4f0

File tree

1 file changed

+15
-9
lines changed

1 file changed

+15
-9
lines changed

tests/unit/pubsub_v1/subscriber/test_streaming_pull_manager.py

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,14 @@
6060
from google.rpc import code_pb2
6161
from google.rpc import error_details_pb2
6262

63+
_message_mock = mock.create_autospec(message.Message, instance=True)
64+
def create_mock_message(**kwargs):
65+
msg = _message_mock.return_value
66+
for k, v in kwargs.items():
67+
setattr(msg, k, v)
68+
69+
return msg
70+
6371

6472
@pytest.mark.parametrize(
6573
"exception,expected_cls",
@@ -80,7 +88,7 @@ def test__wrap_as_exception(exception, expected_cls):
8088

8189

8290
def test__wrap_callback_errors_no_error():
83-
msg = mock.create_autospec(message.Message, instance=True)
91+
msg = create_mock_message()
8492
callback = mock.Mock()
8593
on_callback_error = mock.Mock()
8694

@@ -99,7 +107,7 @@ def test__wrap_callback_errors_no_error():
99107
],
100108
)
101109
def test__wrap_callback_errors_error(callback_error):
102-
msg = mock.create_autospec(message.Message, instance=True)
110+
msg = create_mock_message()
103111
callback = mock.Mock(side_effect=callback_error)
104112
on_callback_error = mock.Mock()
105113

@@ -511,8 +519,8 @@ def test__maybe_release_messages_on_overload():
511519
manager = make_manager(
512520
flow_control=types.FlowControl(max_messages=10, max_bytes=1000)
513521
)
522+
msg = create_mock_message(ack_id="ack", size=11)
514523

515-
msg = mock.create_autospec(message.Message, instance=True, ack_id="ack", size=11)
516524
manager._messages_on_hold.put(msg)
517525
manager._on_hold_bytes = msg.size
518526

@@ -539,9 +547,8 @@ def test_opentelemetry__maybe_release_messages_subscribe_scheduler_span(span_exp
539547
# max load is hit.
540548
_leaser = manager._leaser = mock.create_autospec(leaser.Leaser)
541549
fake_leaser_add(_leaser, init_msg_count=8, assumed_msg_size=10)
542-
msg = mock.create_autospec(
543-
message.Message, instance=True, ack_id="ack_foo", size=10
544-
)
550+
msg = create_mock_message(ack_id="ack_foo", size=10)
551+
545552
msg.message_id = 3
546553
opentelemetry_data = SubscribeOpenTelemetry(msg)
547554
msg.opentelemetry_data = opentelemetry_data
@@ -611,7 +618,7 @@ def test__maybe_release_messages_negative_on_hold_bytes_warning(
611618
)
612619
manager._callback = lambda msg: msg # pragma: NO COVER
613620

614-
msg = mock.create_autospec(message.Message, instance=True, ack_id="ack", size=17)
621+
msg = create_mock_message(ack_id="ack", size=17)
615622
manager._messages_on_hold.put(msg)
616623
manager._on_hold_bytes = 5 # too low for some reason
617624

@@ -1633,8 +1640,7 @@ def test_close_nacks_internally_queued_messages():
16331640
def fake_nack(self):
16341641
nacked_messages.append(self.data)
16351642

1636-
MockMsg = functools.partial(mock.create_autospec, message.Message, instance=True)
1637-
messages = [MockMsg(data=b"msg1"), MockMsg(data=b"msg2"), MockMsg(data=b"msg3")]
1643+
messages = [create_message(data=b"msg1"), create_message(data=b"msg2"), create_message(data=b"msg3")]
16381644
for msg in messages:
16391645
msg.nack = stdlib_types.MethodType(fake_nack, msg)
16401646

0 commit comments

Comments
 (0)