Skip to content

Commit 61b5680

Browse files
authored
Fix unecessary mocking in async example tests. (#1072)
1 parent 02df57d commit 61b5680

3 files changed

Lines changed: 73 additions & 46 deletions

File tree

tests/examples/asyncio/async_add_campaigns_test.py

Lines changed: 45 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -4,32 +4,41 @@
44

55
# Mocking modules before import because the environment seems to lack dependencies
66
mock_google = MagicMock()
7-
sys.modules["google"] = mock_google
8-
sys.modules["google.ads"] = mock_google
9-
sys.modules["google.ads.googleads"] = mock_google
107
sys.modules["google.ads.googleads.client"] = mock_google
118
sys.modules["google.ads.googleads.errors"] = mock_google
129
sys.modules["google.ads.googleads.v23"] = mock_google
1310
sys.modules["google.ads.googleads.v23.resources"] = mock_google
1411
sys.modules["google.ads.googleads.v23.resources.types"] = mock_google
1512
sys.modules["google.ads.googleads.v23.resources.types.campaign"] = mock_google
16-
sys.modules["google.ads.googleads.v23.resources.types.campaign_budget"] = mock_google
13+
sys.modules["google.ads.googleads.v23.resources.types.campaign_budget"] = (
14+
mock_google
15+
)
1716
sys.modules["google.ads.googleads.v23.services"] = mock_google
1817
sys.modules["google.ads.googleads.v23.services.services"] = mock_google
19-
sys.modules["google.ads.googleads.v23.services.services.campaign_budget_service"] = mock_google
20-
sys.modules["google.ads.googleads.v23.services.services.campaign_service"] = mock_google
18+
sys.modules[
19+
"google.ads.googleads.v23.services.services.campaign_budget_service"
20+
] = mock_google
21+
sys.modules["google.ads.googleads.v23.services.services.campaign_service"] = (
22+
mock_google
23+
)
2124
sys.modules["google.ads.googleads.v23.services.types"] = mock_google
22-
sys.modules["google.ads.googleads.v23.services.types.campaign_budget_service"] = mock_google
23-
sys.modules["google.ads.googleads.v23.services.types.campaign_service"] = mock_google
24-
sys.modules["google.ads.googleads.v23.services.types.google_ads_service"] = mock_google
25+
sys.modules[
26+
"google.ads.googleads.v23.services.types.campaign_budget_service"
27+
] = mock_google
28+
sys.modules["google.ads.googleads.v23.services.types.campaign_service"] = (
29+
mock_google
30+
)
31+
sys.modules["google.ads.googleads.v23.services.types.google_ads_service"] = (
32+
mock_google
33+
)
2534

2635
from examples.asyncio import async_add_campaigns
2736

2837

2938
class TestAsyncAddCampaigns(unittest.IsolatedAsyncioTestCase):
3039
async def test_main(self):
3140
# Setup Mocks
32-
mock_client_instance = MagicMock() # Mock the client instance directly
41+
mock_client_instance = MagicMock() # Mock the client instance directly
3342
mock_googleads_service = AsyncMock()
3443
mock_client_instance.get_service.return_value = mock_googleads_service
3544

@@ -56,45 +65,57 @@ async def test_main(self):
5665
# Setup inner objects
5766
mock_budget = mock_budget_op.create
5867
mock_campaign = mock_campaign_op.create
59-
68+
6069
# Setup response
6170
mock_response = MagicMock()
6271
mock_campaign_result = MagicMock()
6372
mock_campaign_result.resource_name = "customers/123/campaigns/456"
64-
73+
6574
# response.mutate_operation_responses[1].campaign_result
6675
mock_response.mutate_operation_responses = [
67-
MagicMock(), # budget result
68-
MagicMock(campaign_result=mock_campaign_result) # campaign result
76+
MagicMock(), # budget result
77+
MagicMock(campaign_result=mock_campaign_result), # campaign result
6978
]
70-
79+
7180
mock_googleads_service.mutate.return_value = mock_response
7281

7382
customer_id = "1234567890"
7483

7584
await async_add_campaigns.main(mock_client_instance, customer_id)
7685

7786
# Verification
78-
87+
7988
# Check if service was retrieved correctly
80-
mock_client_instance.get_service.assert_called_with("GoogleAdsService", is_async=True)
89+
mock_client_instance.get_service.assert_called_with(
90+
"GoogleAdsService", is_async=True
91+
)
8192

8293
# Verify Budget Resource Name
83-
expected_budget_resource_name = f"customers/{customer_id}/campaignBudgets/-1"
84-
self.assertEqual(mock_budget.resource_name, expected_budget_resource_name)
85-
94+
expected_budget_resource_name = (
95+
f"customers/{customer_id}/campaignBudgets/-1"
96+
)
97+
self.assertEqual(
98+
mock_budget.resource_name, expected_budget_resource_name
99+
)
100+
86101
# Verify Campaign references Budget
87-
self.assertEqual(mock_campaign.campaign_budget, expected_budget_resource_name)
102+
self.assertEqual(
103+
mock_campaign.campaign_budget, expected_budget_resource_name
104+
)
88105

89106
# Verify MutateOperations were constructed
90-
self.assertEqual(mock_mutate_op_budget.campaign_budget_operation, mock_budget_op)
91-
self.assertEqual(mock_mutate_op_campaign.campaign_operation, mock_campaign_op)
107+
self.assertEqual(
108+
mock_mutate_op_budget.campaign_budget_operation, mock_budget_op
109+
)
110+
self.assertEqual(
111+
mock_mutate_op_campaign.campaign_operation, mock_campaign_op
112+
)
92113

93114
# Verify GoogleAdsService.mutate called with correct operations
94115
mock_googleads_service.mutate.assert_called_once()
95116
call_args = mock_googleads_service.mutate.call_args
96117
self.assertEqual(call_args.kwargs["customer_id"], customer_id)
97-
118+
98119
operations = call_args.kwargs["mutate_operations"]
99120
self.assertEqual(len(operations), 2)
100121
self.assertEqual(operations[0], mock_mutate_op_budget)

tests/examples/asyncio/async_search_stream_test.py

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,18 @@
44

55
# Mocking modules before import because the environment seems to lack dependencies
66
mock_google = MagicMock()
7-
sys.modules["google"] = mock_google
8-
sys.modules["google.ads"] = mock_google
9-
sys.modules["google.ads.googleads"] = mock_google
107
sys.modules["google.ads.googleads.client"] = mock_google
118
sys.modules["google.ads.googleads.errors"] = mock_google
129
sys.modules["google.ads.googleads.v23"] = mock_google
1310
sys.modules["google.ads.googleads.v23.services"] = mock_google
1411
sys.modules["google.ads.googleads.v23.services.services"] = mock_google
15-
sys.modules["google.ads.googleads.v23.services.services.google_ads_service"] = mock_google
12+
sys.modules["google.ads.googleads.v23.services.services.google_ads_service"] = (
13+
mock_google
14+
)
1615
sys.modules["google.ads.googleads.v23.services.types"] = mock_google
17-
sys.modules["google.ads.googleads.v23.services.types.google_ads_service"] = mock_google
16+
sys.modules["google.ads.googleads.v23.services.types.google_ads_service"] = (
17+
mock_google
18+
)
1819

1920
# Import module under test AFTER mocking
2021
from examples.asyncio import async_search_stream
@@ -29,19 +30,19 @@ async def test_main(self):
2930

3031
# Mock the stream response
3132
# search_stream returns an async iterator of batches
32-
33+
3334
# Create a mock batch
3435
mock_row = MagicMock()
3536
mock_row.campaign.id = 123
3637
mock_row.campaign.name = "Test Campaign"
37-
38+
3839
mock_batch = MagicMock()
3940
mock_batch.results = [mock_row]
4041

4142
# Async iterator setup
4243
async def async_gen():
4344
yield mock_batch
44-
45+
4546
mock_googleads_service.search_stream.return_value = async_gen()
4647

4748
customer_id = "1234567890"
@@ -50,15 +51,17 @@ async def async_gen():
5051
await async_search_stream.main(mock_client_instance, customer_id)
5152

5253
# Verification
53-
54+
5455
# Check if service was retrieved correctly
55-
mock_client_instance.get_service.assert_called_with("GoogleAdsService", is_async=True)
56+
mock_client_instance.get_service.assert_called_with(
57+
"GoogleAdsService", is_async=True
58+
)
5659

5760
# Verify search_stream called
5861
mock_googleads_service.search_stream.assert_called_once()
5962
call_args = mock_googleads_service.search_stream.call_args
6063
self.assertEqual(call_args.kwargs["customer_id"], customer_id)
61-
64+
6265
# Verify Query does NOT contain LIMIT 10
6366
query = call_args.kwargs["query"]
6467
self.assertNotIn("LIMIT 10", query)

tests/examples/asyncio/async_search_test.py

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,18 @@
44

55
# Mocking modules before import because the environment seems to lack dependencies
66
mock_google = MagicMock()
7-
sys.modules["google"] = mock_google
8-
sys.modules["google.ads"] = mock_google
9-
sys.modules["google.ads.googleads"] = mock_google
107
sys.modules["google.ads.googleads.client"] = mock_google
118
sys.modules["google.ads.googleads.errors"] = mock_google
129
sys.modules["google.ads.googleads.v23"] = mock_google
1310
sys.modules["google.ads.googleads.v23.services"] = mock_google
1411
sys.modules["google.ads.googleads.v23.services.services"] = mock_google
15-
sys.modules["google.ads.googleads.v23.services.services.google_ads_service"] = mock_google
12+
sys.modules["google.ads.googleads.v23.services.services.google_ads_service"] = (
13+
mock_google
14+
)
1615
sys.modules["google.ads.googleads.v23.services.types"] = mock_google
17-
sys.modules["google.ads.googleads.v23.services.types.google_ads_service"] = mock_google
16+
sys.modules["google.ads.googleads.v23.services.types.google_ads_service"] = (
17+
mock_google
18+
)
1819

1920
# Import module under test AFTER mocking
2021
from examples.asyncio import async_search
@@ -29,16 +30,16 @@ async def test_main(self):
2930

3031
# Mock the search response (AsyncPager)
3132
# search returns an object that is an async iterator
32-
33+
3334
# Create a mock row
3435
mock_row = MagicMock()
3536
mock_row.campaign.id = 123
3637
mock_row.campaign.name = "Test Campaign"
37-
38+
3839
# Async iterator setup for the pager
3940
async def async_gen():
4041
yield mock_row
41-
42+
4243
mock_googleads_service.search.return_value = async_gen()
4344

4445
customer_id = "1234567890"
@@ -47,15 +48,17 @@ async def async_gen():
4748
await async_search.main(mock_client_instance, customer_id)
4849

4950
# Verification
50-
51+
5152
# Check if service was retrieved correctly
52-
mock_client_instance.get_service.assert_called_with("GoogleAdsService", is_async=True)
53+
mock_client_instance.get_service.assert_called_with(
54+
"GoogleAdsService", is_async=True
55+
)
5356

5457
# Verify search called
5558
mock_googleads_service.search.assert_called_once()
5659
call_args = mock_googleads_service.search.call_args
5760
self.assertEqual(call_args.kwargs["customer_id"], customer_id)
58-
61+
5962
# Verify Query does NOT contain LIMIT 10
6063
query = call_args.kwargs["query"]
6164
self.assertNotIn("LIMIT 10", query)

0 commit comments

Comments
 (0)