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

256
Views
¿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 answers
Answer question

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 Report

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 Report

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 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!