Skip to content

Commit 01649ce

Browse files
committed
Rename util method, add tests
1 parent d97c6f3 commit 01649ce

File tree

3 files changed

+42
-17
lines changed

3 files changed

+42
-17
lines changed

scrapy_playwright/_utils.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -82,12 +82,11 @@ async def _get_page_content(
8282
raise
8383

8484

85-
def _read_float_setting(settings: Settings, key: str) -> Optional[float]:
85+
def _get_float_setting(settings: Settings, key: str) -> Optional[float]:
8686
try:
8787
return float(settings[key])
88-
except (KeyError, TypeError, ValueError):
89-
pass
90-
return None
88+
except:
89+
return None
9190

9291

9392
async def _get_header_value(

scrapy_playwright/handler.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@
3636
_get_page_content,
3737
_is_safe_close_error,
3838
_maybe_await,
39-
_read_float_setting,
39+
_get_float_setting,
4040
)
4141

4242

@@ -87,11 +87,11 @@ def __init__(self, crawler: Crawler) -> None:
8787
self.context_semaphore = asyncio.Semaphore(
8888
value=settings.getint("PLAYWRIGHT_MAX_CONTEXTS")
8989
)
90-
self.close_context_interval: Optional[float] = _read_float_setting(
90+
self.close_context_interval: Optional[float] = _get_float_setting(
9191
settings, "PLAYWRIGHT_CLOSE_CONTEXT_INTERVAL"
9292
)
9393

94-
self.default_navigation_timeout: Optional[float] = _read_float_setting(
94+
self.default_navigation_timeout: Optional[float] = _get_float_setting(
9595
settings, "PLAYWRIGHT_DEFAULT_NAVIGATION_TIMEOUT"
9696
)
9797

tests/tests_asyncio/test_utils.py

Lines changed: 36 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,17 @@
11
import logging
2+
from decimal import Decimal
23
from unittest import IsolatedAsyncioTestCase
34
from unittest.mock import AsyncMock
45

56
import pytest
67
from playwright.async_api import Error as PlaywrightError
78
from scrapy import Spider
89
from scrapy.http.headers import Headers
10+
from scrapy.settings import Settings
911
from scrapy_playwright._utils import (
1012
_NAVIGATION_ERROR_MSG,
1113
_encode_body,
14+
_get_float_setting,
1215
_get_header_value,
1316
_get_page_content,
1417
_maybe_await,
@@ -129,20 +132,19 @@ async def test_encode_mismatch(self):
129132

130133
class TestHeaderValue(IsolatedAsyncioTestCase):
131134
@pytest.mark.asyncio
132-
async def test_get_header_ok(self):
135+
async def test_get_header_value(self):
133136
async def _identity(x):
134137
return x
135138

136-
resource = AsyncMock()
137-
resource.header_value = _identity
138-
assert "asdf" == await _get_header_value(resource, "asdf")
139-
assert "qwerty" == await _get_header_value(resource, "qwerty")
139+
res1 = AsyncMock()
140+
res1.header_value = _identity
141+
assert "asdf" == await _get_header_value(res1, "asdf")
142+
assert "qwerty" == await _get_header_value(res1, "qwerty")
140143

141-
async def test_get_header_exception(self):
142-
resource = AsyncMock()
143-
resource.header_value.side_effect = Exception("nope")
144-
assert await _get_header_value(resource, "asdf") is None
145-
assert await _get_header_value(resource, "qwerty") is None
144+
res2 = AsyncMock()
145+
res2.header_value.side_effect = Exception("nope")
146+
assert await _get_header_value(res2, "asdf") is None
147+
assert await _get_header_value(res2, "qwerty") is None
146148

147149

148150
class TestMaybeAwait(IsolatedAsyncioTestCase):
@@ -157,3 +159,27 @@ async def _awaitable_identity(x):
157159
assert await _maybe_await("foo") == "foo"
158160
assert await _maybe_await("bar") == "bar"
159161
assert await _maybe_await(1234) == 1234
162+
163+
164+
class TestGetFloatSetting(IsolatedAsyncioTestCase):
165+
@pytest.mark.asyncio
166+
async def test_get_float_setting(self):
167+
settings = Settings(
168+
{
169+
"FLOAT": 1.5,
170+
"DECIMAL": Decimal("2.5"),
171+
"INT": 3,
172+
"NUMERIC_STRING": "123",
173+
"NON_NUMERIC_STRING": "asdf",
174+
"NONE": None,
175+
"LIST": [1, 2, 3],
176+
}
177+
)
178+
assert _get_float_setting(settings, "FLOAT") == 1.5
179+
assert _get_float_setting(settings, "DECIMAL") == 2.5
180+
assert _get_float_setting(settings, "INT") == 3.0
181+
assert _get_float_setting(settings, "NUMERIC_STRING") == 123
182+
assert _get_float_setting(settings, "NON_NUMERIC_STRING") is None
183+
assert _get_float_setting(settings, "NONE") is None
184+
assert _get_float_setting(settings, "LIST") is None
185+
assert _get_float_setting(settings, "MISSING_KEY") is None

0 commit comments

Comments
 (0)