Loading tests/environment.py +0 −14 Original line number Diff line number Diff line Loading @@ -25,9 +25,7 @@ from behave.model import Feature from behave.model import Scenario from behave.runner import Context from behave_utils import URL from behave_utils import redirect from behave_utils.mysql import snapshot_rollback from requests.sessions import Session from wp import running_site_fixture if TYPE_CHECKING: Loading Loading @@ -55,18 +53,6 @@ def before_scenario(context: ScenarioContext, scenario: Scenario) -> None: """ Setup tools for each scenario """ context.session = use_fixture(requests_session, context) @fixture def requests_session(context: ScenarioContext, /) -> Iterator[Session]: """ Create and configure a `requests` session for accessing site fixtures """ site = use_fixture(running_site_fixture, context) with Session() as session: redirect(session, site.url, site.address) yield session @fixture Loading tests/steps/request_steps.py +25 −2 Original line number Diff line number Diff line Loading @@ -13,13 +13,19 @@ from __future__ import annotations import json from collections.abc import Collection from typing import Any from typing import Iterator from typing import TypeVar from behave import fixture from behave import then from behave import use_fixture from behave import when from behave.runner import Context from behave_utils import URL from behave_utils import PatternEnum from behave_utils.http import redirect from requests import Session from wp import running_site_fixture T = TypeVar("T") Loading Loading @@ -87,12 +93,28 @@ class ResponseCode(int, PatternEnum): attr.update(additional) @fixture def requests_session(context: Context, /) -> Iterator[Session]: """ Create and configure a `requests` session for accessing site fixtures """ if hasattr(context, "session"): assert isinstance(context.session, Session) yield context.session return site = use_fixture(running_site_fixture, context) with Session() as context.session: redirect(context.session, site.url, site.address) yield context.session @when("{url:URL} is requested") def get_request(context: Context, url: URL) -> None: """ Assign the response from making a GET request to "url" to the context """ context.response = context.session.get(context.site.url / url, allow_redirects=False) session = use_fixture(requests_session, context) context.response = session.get(context.site.url / url, allow_redirects=False) @when("data is sent with {method:Method} to {url:URL}") Loading @@ -102,7 +124,8 @@ def post_request(context: Context, method: Method, url: URL) -> None: """ if context.text is None: raise ValueError("Missing data, please add as text to step definition") context.response = context.session.request( session = use_fixture(requests_session, context) context.response = session.request( method.value, context.site.url / url, data=context.text.strip().format(context=context).encode("utf-8"), Loading Loading
tests/environment.py +0 −14 Original line number Diff line number Diff line Loading @@ -25,9 +25,7 @@ from behave.model import Feature from behave.model import Scenario from behave.runner import Context from behave_utils import URL from behave_utils import redirect from behave_utils.mysql import snapshot_rollback from requests.sessions import Session from wp import running_site_fixture if TYPE_CHECKING: Loading Loading @@ -55,18 +53,6 @@ def before_scenario(context: ScenarioContext, scenario: Scenario) -> None: """ Setup tools for each scenario """ context.session = use_fixture(requests_session, context) @fixture def requests_session(context: ScenarioContext, /) -> Iterator[Session]: """ Create and configure a `requests` session for accessing site fixtures """ site = use_fixture(running_site_fixture, context) with Session() as session: redirect(session, site.url, site.address) yield session @fixture Loading
tests/steps/request_steps.py +25 −2 Original line number Diff line number Diff line Loading @@ -13,13 +13,19 @@ from __future__ import annotations import json from collections.abc import Collection from typing import Any from typing import Iterator from typing import TypeVar from behave import fixture from behave import then from behave import use_fixture from behave import when from behave.runner import Context from behave_utils import URL from behave_utils import PatternEnum from behave_utils.http import redirect from requests import Session from wp import running_site_fixture T = TypeVar("T") Loading Loading @@ -87,12 +93,28 @@ class ResponseCode(int, PatternEnum): attr.update(additional) @fixture def requests_session(context: Context, /) -> Iterator[Session]: """ Create and configure a `requests` session for accessing site fixtures """ if hasattr(context, "session"): assert isinstance(context.session, Session) yield context.session return site = use_fixture(running_site_fixture, context) with Session() as context.session: redirect(context.session, site.url, site.address) yield context.session @when("{url:URL} is requested") def get_request(context: Context, url: URL) -> None: """ Assign the response from making a GET request to "url" to the context """ context.response = context.session.get(context.site.url / url, allow_redirects=False) session = use_fixture(requests_session, context) context.response = session.get(context.site.url / url, allow_redirects=False) @when("data is sent with {method:Method} to {url:URL}") Loading @@ -102,7 +124,8 @@ def post_request(context: Context, method: Method, url: URL) -> None: """ if context.text is None: raise ValueError("Missing data, please add as text to step definition") context.response = context.session.request( session = use_fixture(requests_session, context) context.response = session.request( method.value, context.site.url / url, data=context.text.strip().format(context=context).encode("utf-8"), Loading