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

263
Vistas
¿Cuál es el beneficio de un accesorio con alcance de función y sin código de desmontaje?

¿Cuál es la ventaja de un accesorio de alcance de función (predeterminado) sin código de desmontaje? ¿Por qué no simplemente llamar a la función al comienzo de la prueba?

Por ejemplo, ¿cuál es el beneficio de escribir:

 @pytest.fixture def smtp(): return smtplib.SMTP("smtp.gmail.com") def test_ehlo(smtp): response, msg = smtp.ehlo() # ...

en lugar de simplemente:

 def create_smtp(): return smtplib.SMTP("smtp.gmail.com") def test_ehlo(): smtp = create_smtp() response, msg = smtp.ehlo() # ...

Entiendo por qué los accesorios son útiles cuando necesitamos un código de desmontaje. También entiendo por qué son útiles los accesorios con un alcance que no sea la función: es posible que queramos reutilizar el mismo objeto "externo" en múltiples pruebas (para ahorrar el tiempo que lleva crearlo; o tal vez incluso para mantener su estado, aunque eso parece ser bastante peligroso ya que esto crea un acoplamiento difícil de ver entre pruebas separadas).

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Tuve una pregunta similar cuando comencé a usarlo. Aquí está mi experiencia:

  • Los accesorios se pueden configurar en autouse=True, es decir, se activan automáticamente, lo que puede no ser posible con una llamada en línea. Esto es útil en algunos casos.
  • Los accesorios agregan legibilidad, al menos para mí. Mirando la firma de la prueba, uno puede averiguar qué inicializaciones son un requisito previo para una prueba determinada. En ese sentido, también ayuda a mantener la prueba y su inicialización aislada.
over 4 years ago · Santiago Trujillo Denunciar

0

¿Cuál es la ventaja de un accesorio de alcance de función (predeterminado) sin código de desmontaje? ¿Por qué no simplemente llamar a la función al comienzo de la prueba?

Ahorro de espacio vertical.

Considere algo como esto, donde tiene más de un accesorio por prueba:

 import pytest @pytest.fixture def value1(): return 1 @pytest.fixture def value2(): return 2 @pytest.fixture def value3(): return 3 def test_values(value1, value2, value3): assert value1 == 1 assert value2 == 2 assert value3 == 3

Si hiciéramos esto a tu manera:

 def test_values(): v1 = value1() v2 = value2() v3 = value3() assert v1 == 1 assert v2 == 2 assert v3 == 3

Son tres líneas extra de código. No es gran cosa, pero ¿qué pasaría si tuviera 10 pruebas que necesitaran value1 , value2 y value3 ? Ahora tiene 30 líneas adicionales de espacio vertical básicamente sin razón.

Obviamente, nuestros dos ejemplos están demasiado simplificados (podría haber hecho la llamada y assert en línea), pero creo que es sencillo ver cómo esto podría tener un impacto con el código real.

over 4 years ago · Santiago Trujillo Denunciar

0

Creo que una de las ventajas más importantes de los accesorios con ámbito de función es la consistencia. Es mucho más legible y lógico si todos sus dispositivos (sin importar el alcance o el código de desmontaje) se usan exactamente de la misma manera.

Además, si en algún momento en el futuro decide cambiar el alcance de este dispositivo o agregarle un código de desmontaje, entonces no necesitará cambiar ningún caso de prueba, solo el código del dispositivo.

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