Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

331
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda