Skip to content

Commit 8bd4ff3

Browse files
committed
Refactor test parameters: centralize common values in setUp methods
1 parent a7bee46 commit 8bd4ff3

File tree

10 files changed

+231
-160
lines changed

10 files changed

+231
-160
lines changed

.github/workflows/test.yml

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -28,13 +28,9 @@ jobs:
2828
pip install -r requirements.txt
2929
pip install pytest pytest-cov
3030
31-
- name: Run package functionality test
31+
- name: Run package and basic functionality tests
3232
run: |
33-
python test_package.py
34-
35-
- name: Run basic unit tests
36-
run: |
37-
python -m unittest tests.test_basic -v
33+
python -m unittest tests.test_package tests.test_basic -v
3834
3935
- name: Run network-dependent tests (optional)
4036
continue-on-error: true

test_package.py

Lines changed: 0 additions & 108 deletions
This file was deleted.

tests/test_app_methods.py

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,10 @@ class TestAppMethods(unittest.TestCase):
99

1010
@classmethod
1111
def setUpClass(cls):
12-
cls.scraper = GPlayScraper()
13-
cls.app_id = "com.whatsapp"
14-
cls.lang = "en"
15-
cls.country = "us"
12+
cls.scraper = GPlayScraper() # Initialize scraper
13+
cls.app_id = "com.whatsapp" # WhatsApp app ID for testing
14+
cls.lang = "en" # Language
15+
cls.country = "us" # Country
1616

1717
def test_app_analyze(self):
1818
"""Test app_analyze returns dictionary with data or handles errors gracefully"""
@@ -22,6 +22,12 @@ def test_app_analyze(self):
2222
self.assertIsInstance(result, dict)
2323
if result: # Only check if we got data
2424
self.assertIn('title', result)
25+
print(f"\n✅ App data retrieved for {self.app_id}:")
26+
print(f"Title: {result.get('title', 'N/A')}")
27+
print(f"Score: {result.get('score', 'N/A')}")
28+
print(f"Installs: {result.get('installs', 'N/A')}")
29+
print(f"Developer: {result.get('developer', 'N/A')}")
30+
print(f"Total fields: {len(result)}")
2531
except (NetworkError, RateLimitError, GPlayScraperError) as e:
2632
warnings.warn(f"Network/Rate limit error in test_app_analyze: {e}")
2733
self.skipTest(f"Skipping due to network/rate limit: {e}")
@@ -34,6 +40,7 @@ def test_app_get_field(self):
3440
if result is not None:
3541
self.assertIsInstance(result, str)
3642
self.assertTrue(len(result) > 0)
43+
print(f"\n✅ Single field 'title': {result}")
3744
except (NetworkError, RateLimitError, GPlayScraperError) as e:
3845
warnings.warn(f"Network/Rate limit error in test_app_get_field: {e}")
3946
self.skipTest(f"Skipping due to network/rate limit: {e}")
@@ -46,6 +53,9 @@ def test_app_get_fields(self):
4653
result = self.scraper.app_get_fields(self.app_id, fields, lang=self.lang, country=self.country)
4754
if result:
4855
self.assertIsInstance(result, dict)
56+
print(f"\n✅ Multiple fields retrieved:")
57+
for field, value in result.items():
58+
print(f" {field}: {value}")
4959
except (NetworkError, RateLimitError, GPlayScraperError) as e:
5060
warnings.warn(f"Network/Rate limit error in test_app_get_fields: {e}")
5161
self.skipTest(f"Skipping due to network/rate limit: {e}")
@@ -54,6 +64,7 @@ def test_app_print_field(self):
5464
"""Test app_print_field executes without error or handles errors gracefully"""
5565
time.sleep(2) # Wait 2 seconds before request
5666
try:
67+
print(f"\n✅ app_print_field output:")
5768
self.scraper.app_print_field(self.app_id, "title", lang=self.lang, country=self.country)
5869
except (NetworkError, RateLimitError, GPlayScraperError) as e:
5970
warnings.warn(f"Network/Rate limit error in test_app_print_field: {e}")
@@ -65,6 +76,7 @@ def test_app_print_fields(self):
6576
"""Test app_print_fields executes without error or handles errors gracefully"""
6677
time.sleep(2) # Wait 2 seconds before request
6778
try:
79+
print(f"\n✅ app_print_fields output:")
6880
self.scraper.app_print_fields(self.app_id, ["title", "score"], lang=self.lang, country=self.country)
6981
except (NetworkError, RateLimitError, GPlayScraperError) as e:
7082
warnings.warn(f"Network/Rate limit error in test_app_print_fields: {e}")
@@ -76,6 +88,7 @@ def test_app_print_all(self):
7688
"""Test app_print_all executes without error or handles errors gracefully"""
7789
time.sleep(2) # Wait 2 seconds before request
7890
try:
91+
print(f"\n✅ app_print_all output:")
7992
self.scraper.app_print_all(self.app_id, lang=self.lang, country=self.country)
8093
except (NetworkError, RateLimitError, GPlayScraperError) as e:
8194
warnings.warn(f"Network/Rate limit error in test_app_print_all: {e}")

tests/test_developer_methods.py

Lines changed: 25 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -14,17 +14,23 @@ class TestDeveloperMethods(unittest.TestCase):
1414

1515
def setUp(self):
1616
"""Set up test fixtures before each test method."""
17-
self.scraper = GPlayScraper()
18-
self.dev_id = "5700313618786177705" # WhatsApp Inc. developer ID
17+
self.scraper = GPlayScraper() # Initialize scraper
18+
self.dev_id = "5700313618786177705" # Google Inc. developer ID
19+
self.count = 10 # Number of items to fetch
20+
self.lang = "en" # Language
21+
self.country = "us" # Country
1922

2023
def test_developer_analyze(self):
2124
"""Test developer_analyze returns list of apps."""
2225
time.sleep(2)
2326
try:
24-
result = self.scraper.developer_analyze(self.dev_id, count=10)
27+
result = self.scraper.developer_analyze(self.dev_id, count=self.count, lang=self.lang, country=self.country)
2528
self.assertIsInstance(result, list)
2629
if result:
2730
self.assertGreater(len(result), 0)
31+
print(f"\n✅ Developer apps ({len(result)} apps):")
32+
for i, app in enumerate(result[:3]): # Show first 3 apps
33+
print(f" {i+1}. {app.get('title', 'N/A')} - {app.get('score', 'N/A')} stars")
2834
except (NetworkError, RateLimitError, GPlayScraperError) as e:
2935
warnings.warn(f"Network/Rate limit error in test_developer_analyze: {e}")
3036
self.skipTest(f"Skipping due to network/rate limit: {e}")
@@ -33,8 +39,12 @@ def test_developer_get_field(self):
3339
"""Test developer_get_field returns list of field values."""
3440
time.sleep(2)
3541
try:
36-
result = self.scraper.developer_get_field(self.dev_id, "title", count=5)
42+
result = self.scraper.developer_get_field(self.dev_id, "title", count=self.count, lang=self.lang, country=self.country)
3743
self.assertIsInstance(result, list)
44+
if result:
45+
print(f"\n✅ Developer app titles ({len(result)} apps):")
46+
for i, title in enumerate(result[:3]):
47+
print(f" {i+1}. {title}")
3848
except (NetworkError, RateLimitError, GPlayScraperError) as e:
3949
warnings.warn(f"Network/Rate limit error in test_developer_get_field: {e}")
4050
self.skipTest(f"Skipping due to network/rate limit: {e}")
@@ -43,8 +53,12 @@ def test_developer_get_fields(self):
4353
"""Test developer_get_fields returns list of dictionaries."""
4454
time.sleep(2)
4555
try:
46-
result = self.scraper.developer_get_fields(self.dev_id, ["title", "score"], count=5)
56+
result = self.scraper.developer_get_fields(self.dev_id, ["title", "score"], count=self.count, lang=self.lang, country=self.country)
4757
self.assertIsInstance(result, list)
58+
if result:
59+
print(f"\n✅ Developer app fields ({len(result)} apps):")
60+
for i, app in enumerate(result[:3]):
61+
print(f" {i+1}. {app.get('title', 'N/A')} - {app.get('score', 'N/A')} stars")
4862
except (NetworkError, RateLimitError, GPlayScraperError) as e:
4963
warnings.warn(f"Network/Rate limit error in test_developer_get_fields: {e}")
5064
self.skipTest(f"Skipping due to network/rate limit: {e}")
@@ -53,7 +67,8 @@ def test_developer_print_field(self):
5367
"""Test developer_print_field executes without error."""
5468
time.sleep(2)
5569
try:
56-
self.scraper.developer_print_field(self.dev_id, "title", count=5)
70+
print(f"\n✅ developer_print_field output:")
71+
self.scraper.developer_print_field(self.dev_id, "title", count=self.count, lang=self.lang, country=self.country)
5772
except (NetworkError, RateLimitError, GPlayScraperError) as e:
5873
warnings.warn(f"Network/Rate limit error in test_developer_print_field: {e}")
5974
self.skipTest(f"Skipping due to network/rate limit: {e}")
@@ -64,7 +79,8 @@ def test_developer_print_fields(self):
6479
"""Test developer_print_fields executes without error."""
6580
time.sleep(2)
6681
try:
67-
self.scraper.developer_print_fields(self.dev_id, ["title", "score"], count=5)
82+
print(f"\n✅ developer_print_fields output:")
83+
self.scraper.developer_print_fields(self.dev_id, ["title", "score"], count=self.count, lang=self.lang, country=self.country)
6884
except (NetworkError, RateLimitError, GPlayScraperError) as e:
6985
warnings.warn(f"Network/Rate limit error in test_developer_print_fields: {e}")
7086
self.skipTest(f"Skipping due to network/rate limit: {e}")
@@ -75,7 +91,8 @@ def test_developer_print_all(self):
7591
"""Test developer_print_all executes without error."""
7692
time.sleep(2)
7793
try:
78-
self.scraper.developer_print_all(self.dev_id, count=5)
94+
print(f"\n✅ developer_print_all output:")
95+
self.scraper.developer_print_all(self.dev_id, count=self.count, lang=self.lang, country=self.country)
7996
except (NetworkError, RateLimitError, GPlayScraperError) as e:
8097
warnings.warn(f"Network/Rate limit error in test_developer_print_all: {e}")
8198
self.skipTest(f"Skipping due to network/rate limit: {e}")

tests/test_list_methods.py

Lines changed: 24 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,18 +14,24 @@ class TestListMethods(unittest.TestCase):
1414

1515
def setUp(self):
1616
"""Set up test fixtures before each test method."""
17-
self.scraper = GPlayScraper()
17+
self.scraper = GPlayScraper() # Initialize scraper
1818
self.collection = "TOP_FREE" # Top free apps collection
1919
self.category = "GAME" # Game category
20+
self.count = 10 # Number of items to fetch
21+
self.lang = "en" # Language
22+
self.country = "us" # Country
2023

2124
def test_list_analyze(self):
2225
"""Test list_analyze returns list of top apps."""
2326
time.sleep(2)
2427
try:
25-
result = self.scraper.list_analyze(self.collection, self.category, count=10)
28+
result = self.scraper.list_analyze(self.collection, self.category, count=self.count, lang=self.lang, country=self.country)
2629
self.assertIsInstance(result, list)
2730
if result:
2831
self.assertGreater(len(result), 0)
32+
print(f"\n✅ Top {self.collection} {self.category} apps ({len(result)} apps):")
33+
for i, app in enumerate(result[:3]): # Show first 3 apps
34+
print(f" {i+1}. {app.get('title', 'N/A')} - {app.get('developer', 'N/A')}")
2935
except (NetworkError, RateLimitError, GPlayScraperError) as e:
3036
warnings.warn(f"Network/Rate limit error in test_list_analyze: {e}")
3137
self.skipTest(f"Skipping due to network/rate limit: {e}")
@@ -34,8 +40,12 @@ def test_list_get_field(self):
3440
"""Test list_get_field returns list of field values."""
3541
time.sleep(2)
3642
try:
37-
result = self.scraper.list_get_field(self.collection, self.category, "title", count=5)
43+
result = self.scraper.list_get_field(self.collection, self.category, "title", count=self.count, lang=self.lang, country=self.country)
3844
self.assertIsInstance(result, list)
45+
if result:
46+
print(f"\n✅ Top chart app titles ({len(result)} apps):")
47+
for i, title in enumerate(result[:3]):
48+
print(f" {i+1}. {title}")
3949
except (NetworkError, RateLimitError, GPlayScraperError) as e:
4050
warnings.warn(f"Network/Rate limit error in test_list_get_field: {e}")
4151
self.skipTest(f"Skipping due to network/rate limit: {e}")
@@ -44,8 +54,12 @@ def test_list_get_fields(self):
4454
"""Test list_get_fields returns list of dictionaries."""
4555
time.sleep(2)
4656
try:
47-
result = self.scraper.list_get_fields(self.collection, self.category, ["title", "score"], count=5)
57+
result = self.scraper.list_get_fields(self.collection, self.category, ["title", "score"], count=self.count, lang=self.lang, country=self.country)
4858
self.assertIsInstance(result, list)
59+
if result:
60+
print(f"\n✅ Top chart app fields ({len(result)} apps):")
61+
for i, app in enumerate(result[:3]):
62+
print(f" {i+1}. {app.get('title', 'N/A')} - {app.get('score', 'N/A')} stars")
4963
except (NetworkError, RateLimitError, GPlayScraperError) as e:
5064
warnings.warn(f"Network/Rate limit error in test_list_get_fields: {e}")
5165
self.skipTest(f"Skipping due to network/rate limit: {e}")
@@ -54,7 +68,8 @@ def test_list_print_field(self):
5468
"""Test list_print_field executes without error."""
5569
time.sleep(2)
5670
try:
57-
self.scraper.list_print_field(self.collection, self.category, "title", count=5)
71+
print(f"\n✅ list_print_field output:")
72+
self.scraper.list_print_field(self.collection, self.category, "title", count=self.count, lang=self.lang, country=self.country)
5873
except (NetworkError, RateLimitError, GPlayScraperError) as e:
5974
warnings.warn(f"Network/Rate limit error in test_list_print_field: {e}")
6075
self.skipTest(f"Skipping due to network/rate limit: {e}")
@@ -65,7 +80,8 @@ def test_list_print_fields(self):
6580
"""Test list_print_fields executes without error."""
6681
time.sleep(2)
6782
try:
68-
self.scraper.list_print_fields(self.collection, self.category, ["title", "score"], count=5)
83+
print(f"\n✅ list_print_fields output:")
84+
self.scraper.list_print_fields(self.collection, self.category, ["title", "score"], count=self.count, lang=self.lang, country=self.country)
6985
except (NetworkError, RateLimitError, GPlayScraperError) as e:
7086
warnings.warn(f"Network/Rate limit error in test_list_print_fields: {e}")
7187
self.skipTest(f"Skipping due to network/rate limit: {e}")
@@ -76,7 +92,8 @@ def test_list_print_all(self):
7692
"""Test list_print_all executes without error."""
7793
time.sleep(2)
7894
try:
79-
self.scraper.list_print_all(self.collection, self.category, count=5)
95+
print(f"\n✅ list_print_all output:")
96+
self.scraper.list_print_all(self.collection, self.category, count=self.count, lang=self.lang, country=self.country)
8097
except (NetworkError, RateLimitError, GPlayScraperError) as e:
8198
warnings.warn(f"Network/Rate limit error in test_list_print_all: {e}")
8299
self.skipTest(f"Skipping due to network/rate limit: {e}")

0 commit comments

Comments
 (0)