How to combine multiple RequestMock contexts (pytest fixture)?
I maintainer di solito rispondono entro 3 giorni
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 45/100
Direzione di ricerca
Inizia dal contesto e dal comportamento di registrazione di RequestsMock, quindi esamina la issue #542 correlata e i fixture pytest mostrati qui. Riproduci test_api e test_api2; il lavoro è completato quando sia le richieste a example.foo sia quelle a example.bar restituiscono le rispettive risposte 200 registrate, senza che un mock sovrascriva l’altro.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
How can I combine multiple RequestsMock contexts so that they don't overwrite each other?
In my specific case I'm using RequestsMock as pytest fixtures.
If there isn't a supported way to do this, what's the easiest way to programmatically copy the registered mocks from 2 different RequestsMock into a 3rd one?
from typing import Generator
import pytest
import requests
import responses
@pytest.fixture
def mock_foo_api() -> Generator[responses.RequestsMock, None, None]:
with responses.RequestsMock() as rsps:
rsps.add(
responses.GET,
"https://example.foo",
status=200,
body="{'msg': 'foo'}"
content_type="application/json",
)
yield rsps
@pytest.fixture
def mock_bar_api() -> Generator[responses.RequestsMock, None, None]:
with responses.RequestsMock() as rsps:
rsps.add(
responses.GET,
"https://example.bar",
status=200,
body="{'msg': 'bar'}"
content_type="application/json",
)
yield rsps
def test_api(mock_foo_api: responses.RequestsMock, mock_bar_api: responses.RequestsMock):
# this test fails
bar_req = requests.get("https://example.bar")
assert bar_req.status_code == 200
foo_req = requests.get("https://example.foo")
assert foo_req.status_code == 200
# can I do something like this?? 👇
@pytest.fixture
def hypothetical_combined_api_mocks(
mock_foo_api: responses.RequestsMock,
mock_bar_api: responses.RequestsMock
):
with responses.RequestsMock() as rsps:
for registered_mock in [*mock_foo_api.<SOMETHING>, *mock_bar_api.<SOMETHING>]
rsps.add(registered_mock)
yield rsps
def test_api2(hypothetical_combined_api_mocks: responses.RequestsMock):
bar_req = requests.get("https://example.bar")
assert bar_req.status_code == 200
foo_req = requests.get("https://example.foo")
assert foo_req.status_code == 200
- This seems somewhat related to #https://github.com/getsentry/responses/issues/542
- Lingua principale
- Python
- Stelle
- 4.3k
- Fork
- 389
- Merge medio
- 1g 17h
- PR unite (30g)
- 2
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Nessuna guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di getsentry/responses
-
json_params_matcher fails on falsy top-level JSON primitives (0, False, "")Forse già presa @mayureshsonawane17 l’ha presa 26 giorni fa. ApertaWaiting for: Product Owner
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
I maintainer di solito rispondono entro 3 giorni
-
enhancement Waiting for: Product Owner
Difficoltà 4/5 3-5 giorni Idoneità per principianti 35/100
getsentry/responses#783 · 1 commento · 3 reazioni ·
I maintainer di solito rispondono entro 3 giorni
-
bug Waiting for: Product Owner
Difficoltà 3/5 1-2 giorni Idoneità per principianti 35/100
getsentry/responses#780 · 1 commento ·
I maintainer di solito rispondono entro 3 giorni
-
Bad Network SimulationApertaenhancement question
Difficoltà 5/5 Più di una settimana Idoneità per principianti 30/100
I maintainer di solito rispondono entro 3 giorni
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 45/100
getsentry/responses#765 · 1 commento ·
I maintainer di solito rispondono entro 3 giorni
Tutte le issue di getsentry/responses
Issue simili
-
ReadQwen3PaperTask5 rejects correct answers that differ only in order, case, or underscore formForse già presa @Kingpython123 l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 90/100
Tongyi-MAI/MobileWorld#72 ·
-
_threads/application: Update typing annotations using `pyupgrade --py311-plus`Forse già presa @gudnimg l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
I maintainer di solito rispondono entro 1 giorno
-
Health probes return 401 when authentication is enabled and the API is served under /orbForse già presa @fgogolli l’ha presa oggi. Apertaarea: api priority: p2 size: S type: bug
Difficoltà 2/5 Mezza giornata Idoneità per principianti 75/100
finos/open-resource-broker#704 ·
I maintainer di solito rispondono entro 1 giorno
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 74/100
BCDA-APS/polar-bits#93 ·
-
bug
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 90/100
GoogleCloudPlatform/gce-rescue#218 ·
I maintainer di solito rispondono entro 2 giorni