Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

490
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda