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

338
Visualizações
jaydebeapi bajo contenido variable de entorno de fugas de pytest en registros

Me estoy conectando a una base de datos usando jaydebeapi y un controlador jdbc usando el siguiente fragmento, que funciona bien cuando todos los parámetros se especifican correctamente. Estoy almacenando mis credenciales en variables de entorno, por ejemplo, os.environ.get('credentials')

 import jaydebeapi as dbdriver import os cnxn = None server_name='' server_jdbc_port= server_database='' name_env_credentials='' name_env_pwd='' try: driver_path = "XXXXXXX" conn_uri = "jdbc:://%s:%s/%s?" % (server_name,server_jdbc_port, server_database) cnxn = dbdriver.connect( "XXXXXXX", conn_uri, driver_args = {"user": os.environ.get(name_env_credentials), "password": os.environ.get(name_env_pwd)}, jars = driver_path) print('Connection open') except (Exception) as error: raise error finally: # in any case close connection and free resources if cnxn is not None: cnxn.close() print('Database connection closed.')

Si hay algunos errores en mis credenciales/derechos de acceso, lo cual está bien.

 java.sql.SQLExceptionPyRaisable: java.sql.SQLException: authentication error: Insufficient privileges to connect to the database 'XXXXX'

Sin embargo, cuando envuelvo lo anterior en una función, pytest en server_name,server_jdbc_port,server_database,name_env_credentials,name_env_pwd.

 ######test_issue.py @pytest.mark.parametrize("server_name,server_jdbc_port,server_database,name_env_credentials,name_env_pwd", testdata) def test_connectivity(): # above code

cuando corro

 pytest test_issue.py

y aparece un error, encuentro mis credenciales en texto sin formato en los registros, lo cual es un problema. Para ser precisos, no veo el contenido name_env_credentials (sería aceptable) sino realmente el contenido de os.environ.get(name_env_credentials) (a continuación, por ejemplo, MYPLAINTEXTUSERNAME) en los registros/rastreos de prueba

 test_issue.py:56: in test_connectivity cnxn = dbdriver.connect( "--------", /opt/conda/lib/python3.8/site-packages/jaydebeapi/__init__.py:412: in connect jconn = _jdbc_connect(jclassname, url, driver_args, jars, libs) [........] driver_args = {'password': MYPLAINTEXTPASSWORD, 'user': MYPLAINTEXTUSERNAME} [........] jaydebeapi.__version__='1.2.3'
over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Está utilizando el registrador de seguimiento predeterminado de pytest, que también registra los argumentos pasados a una función específica. Una forma de resolver este tipo de fuga es utilizar otro modo de rastreo. Puede encontrar la documentación general en este enlace . En ese enlace puedes encontrar dos interesantes modos de rastreo:

  • --tb=short
  • --tb=native

Ambos te dan toda la información que necesitas durante tu prueba específica ya que:

  • Todavía le brindan información sobre las pruebas fallidas o exitosas.
  • Dado que está utilizando pruebas parametrizadas, los registros sobre fallas se verán como FAILED test_issue.py::test_connectivity[server_name-server_jdbc_port-server_database-name_env_credentials-name_env_pwd] , de esta manera puede identificar la prueba fallida real

Tenga en cuenta que esta solución, si bien evita registrar las credenciales utilizadas en el momento de la prueba, estas credenciales utilizadas durante la prueba no deben ser las mismas que se utilizarán fuera del entorno de prueba. Si le preocupa el hecho de que, en caso de fallas en la producción, el registrador podría filtrar sus credenciales, debe configurar su registrador en consecuencia y evitar registrar el texto predeterminado de la excepción.

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