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

485
Views
Gestión de configuración Pydantic + FastAPI: ¿cómo ignorar un archivo .env durante las pruebas con pytest?

Estoy usando la gestión de configuración de Pydantic en un proyecto basado en FastAPI. Tengo una clase de Settings como esta:

 class Settings(BaseSettings): FOO: str = '' BAR: int = 0 class Config: env_file = "path/to/.my_env_file") env_nested_delimiter = "__"

La path/to/.my_env_file contiene valores FOO y BAR .

Durante las pruebas, necesito parchear selectivamente Settings y no quiero leer nada de path/to/.my_env_file . P.ej,

path/to/.my_env_file

 FOO=i_do_not_wanna_read_this BAR=100

mi archivo de prueba:

 @lru_cache() def get_settings(): return Settings() def get_settings_override() -> Settings: return Settings( FOO = 'foo' ) app.dependency_overrides[get_settings] = get_settings_override

Quiero ejecutar pruebas con FOO='foo' y con el valor predeterminado de BAR (es decir, BAR=0 , ignorando el contenido de path/to/.my_env_file . En el código anterior, obtengo FOO='foo' pero BAR todavía se lee desde path/to/.my_env_file (es decir, BAR=100 )

¿Hay una manera directa de manejar eso?

over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

Si bien no pude encontrar una solución sencilla en los documentos o en cualquier otra página, esto funcionó para mis pruebas:

Cuando use tox, coloque esto en su tox.ini , según esta pregunta de desbordamiento de pila :

 [testenv] setenv = TOX_TESTENV = true

Luego puede simplemente usar el siguiente fragmento para anular la configuración de su env_file :

 import os # ... snip ... if os.environ.get("TOX_TESTENV") is not None: Settings.Config.env_file = ""

Enfoques similares, por ejemplo, al verificar sys.argv para verificar la existencia de "prueba" o verificar si unittest está cargado , también deberían funcionar bien:

 import sys # ... snip ... if len(sys.argv) > 1 and "pytest" in sys.argv[0]: Settings.Config.env_file = ""
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!