Skip to content

Commit cfa4555

Browse files
feat: Add test suite for examples/reporting
Adds a comprehensive test suite for the `parallel_report_download.py` script located in the `examples/reporting/` directory. The test suite is created in `examples/reporting/tests/` and includes: - Unit tests for individual functions: `generate_inputs`, `issue_search_request` (including success, API error handling, and retry logic). - Integration tests for the `main()` function and the script's `if __name__ == "__main__":` entry point, covering argument parsing and client initialization. - Mocking of external dependencies, particularly the GoogleAdsClient and its services, to allow tests to run without live API calls. - Verification that the Google Ads API v19 is utilized, aligning with the script's existing configuration. The `campaign_query` and `ad_group_query` in `parallel_report_download.py` were moved to module-level constants to facilitate easier testing.
1 parent 2e9452d commit cfa4555

File tree

3 files changed

+378
-10
lines changed

3 files changed

+378
-10
lines changed

examples/reporting/parallel_report_download.py

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,16 @@
3535
# Maximum number of retries for errors.
3636
MAX_RETRIES = 5
3737

38+
# Define the GAQL query strings to run for each customer ID.
39+
campaign_query = """
40+
SELECT campaign.id, metrics.impressions, metrics.clicks
41+
FROM campaign
42+
WHERE segments.date DURING LAST_30_DAYS"""
43+
ad_group_query = """
44+
SELECT campaign.id, ad_group.id, metrics.impressions, metrics.clicks
45+
FROM ad_group
46+
WHERE segments.date DURING LAST_30_DAYS"""
47+
3848

3949
def main(
4050
client: GoogleAdsClient, customer_ids: List[str]
@@ -46,16 +56,6 @@ def main(
4656
customer_ids: an array of client customer IDs.
4757
"""
4858

49-
# Define the GAQL query strings to run for each customer ID.
50-
campaign_query = """
51-
SELECT campaign.id, metrics.impressions, metrics.clicks
52-
FROM campaign
53-
WHERE segments.date DURING LAST_30_DAYS"""
54-
ad_group_query = """
55-
SELECT campaign.id, ad_group.id, metrics.impressions, metrics.clicks
56-
FROM ad_group
57-
WHERE segments.date DURING LAST_30_DAYS"""
58-
5959
inputs: Iterable[Tuple[GoogleAdsClient, str, str]] = generate_inputs(
6060
client, customer_ids, [campaign_query, ad_group_query]
6161
)

examples/reporting/tests/__init__.py

Whitespace-only changes.

0 commit comments

Comments
 (0)