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

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

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 Relatório

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 Relatório

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