Closed bfontaine closed 5 months ago
Can you try moving the httpx_mock
fixture before client
in the test signature, as in:
# conftest.py
@pytest.fixture(scope="function")
async def client(app):
# ...
async with AsyncClient(app=app, base_url="http://test") as c:
yield c
# test file
async def test_foo(httpx_mock, client):
httpx_mock.add_response(url="...", json={...})
r = await client.get("/")
assert r.json() == {...}
Thank you. After debugging the issue it turns out that my code wasn’t even working by moving the add_response
inside the client
fixture because I mixed things up: I’m testing an API with HTTPX, but this API calls an external API using requests
, and I was trying to mock that external API with pytest_httpx, which of course cannot work.
Hello, I’m getting the HTTPX client as a feature, so it’s already created by the time I mock responses:
However this doesn’t seem to work; the test fails because the URL doesn’t match and the mocked response is never requested.
It works if I move the
add_response
inside theclient
fixture, just before theasync with
, but then the mock applies to all tests and so fails in all but one because the mocked response is never requested.Is there some way to make this work?