Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

297
Views
¿Cómo deshabilitar las excepciones del servidor en fast-api cuando se prueba con httpx AsyncClient?

Tenemos una aplicación FastApi y usamos httpx AsyncClient con fines de prueba. Estamos experimentando un problema en el que las pruebas unitarias se ejecutan localmente bien pero fallan en el servidor CI (acciones de Github).

Después de más investigaciones, nos encontramos con esta solución propuesta al establecer raise_server_exceptions=False en False .

 client = TestClient(app, raise_server_exceptions=False)

Sin embargo, esto es para el cliente de sincronización. Estamos usando el cliente asíncrono.

 @pytest.fixture async def client(test_app): async with AsyncClient(app=test_app, base_url="http://testserver") as client: yield client

AsyncClient no admite la opción raise_app_exceptions=False .

¿Alguien tiene experiencia con esto? Gracias

over 4 years ago · Santiago Trujillo
2 answers
Answer question

0

El problema es causado por la versión FastApi. Puede usar fastapi==0.65.0 e incluso sin el objeto ASGITransport y el indicador raise_app_exceptions=False, podrá ejecutar las pruebas que verifican la creación de excepciones personalizadas. Además, la versión fastapi debe congelarse en el archivo de requisitos. Puedes leer más aquí

over 4 years ago · Santiago Trujillo Report

0

Para httpx v0.14.0+ necesita usar httpx.ASGITransport . Extracto de la documentación oficial :

Para algunos casos más complejos, es posible que deba personalizar el transporte ASGI. Esto le permite:

  • Inspeccione 500 respuestas de error en lugar de generar excepciones configurando raise_app_exceptions=False.
  • Monte la aplicación ASGI en una subruta configurando root_path.
  • Use una dirección de cliente determinada para las solicitudes configurando client.

Por ejemplo:

 # Instantiate a client that makes ASGI requests with a client IP of "1.2.3.4", # on port 123. transport = httpx.ASGITransport(app=app, raise_app_exceptions=False, client=("1.2.3.4", 123)) async with httpx.AsyncClient(transport=transport, base_url="http://testserver") as client: ...
over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!