IIC2113-2018-2 / syllabus

Repositorio principal para el curso Diseño Detallado de Software (IIC2113) 2018-2
17 stars 4 forks source link

Testeando al rededor de 'if __name__ == "__main__"' #46

Closed aaossa closed 5 years ago

aaossa commented 5 years ago

Hola!

Dado que estoy haciendo mi aplicación por consola, tengo la siguiente línea como punto de entrada:

if __name__ == "__main__":
    main()

A dicha función, click le agrega parámetros de forma dinámica, por lo que, aunque la función los recibe, no es necesario que yo se los entregué ahí. Eso provoca que pylint me muestre el error E1120: No value for argument '*' in function call (no-value-for-parameter), que deshabilito comentando # pylint: disable=no-value-for-parameter al final de la línea 2 del snippet.

Todo bien hasta que probé mis tests y la línea estaba marcada como "no cubierta" ya que no hay tests que pasen por ahí (lo que es obvio e intencionado). Probé evitando que se considerara en el coverage comentando # pragma: no cover, pero resulta que este comentario no es compatible con el de pylint, provocando que uno de los dos falle (probé colocando uno primero y luego el otro). La solución que logré fue agregar el comentario al final de la línea 1 del snippet.

Mis preguntas son:

El código resultante se ve así:

if __name__ == "__main__": # pragma: no cover
    main() # pylint: disable=no-value-for-parameter

Gracias!

rasaffie commented 5 years ago

1) En este caso en particular tiene sentido modificar la configuración de pylint. Sin embargo debes detallar y explicar la razón en el README.md de tu proyecto. 2) Tiene sentido no considerar la llamada a maincomo parte del coverage ya que no es parte del código fuente de la aplicación, si no que de cuando se utiliza.