Escribiendo nuestro primer test

3/17
Recursos

Aportes 11

Preguntas 3

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesión.

Probablemente no tenga mucha experiencia profesional pues apenas llevo 10 meses que trabajo como desarrollador backend y uso django en mi día a día. Pero algo que les puedo decir es que a veces hay que probar funciones más complejas, por ejemplo funciones que hacen peticiones a una api externa o algo. Hay un aporte de una persona super bueno sobre los mocks: https://platzi.com/blog/tests-python-usando-mock/

Esto ayuda mucho a probar la lógica de la función

Créditos a la persona que hizo la publicación

Viendo las opciones que hay para hacer asserts con TestCase, en el caso del ejemplo también se podría haber usado directamente AssertFalse

self.assertFalse(future_question.was_published_recently())

Da exactamente el mismo resultado que obtuvo el profesor.

El comando python manage.py test por defecto va a hacer:

  1. Busca todos los archivos cuyo nombre tengan la forma test*.py
  2. En esos archivos, busca todos los TestCase, que son las clases que heredan de django.test.TestCase
  3. De esos TestCase, busca todos los métodos cuyo nombre comience con test

Como referencia, ver documentacion de Django sobre tests

# Run all the tests in the animals.tests module
$ ./manage.py test animals.tests

# Run all the tests found within the 'animals' package
$ ./manage.py test animals

# Run just one test case
$ ./manage.py test animals.tests.AnimalTestCase

# Run just one test method
$ ./manage.py test animals.tests.AnimalTestCase.test_animals_can_speak

Aporte de la doc de Django

It’s a good idea to run your tests with Python warnings enabled: python -Wa manage. py test. The -Wa flag tells Python to display deprecation warnings. Django, like many other Python libraries, uses these warnings to flag when features are going away. It also might flag areas in your code that aren’t strictly wrong but could benefit from a better implementation.

Con assertIs, assertEqual, assertFalse dan el mismo resultado.

Al dejar

	from premiosplatziapp.polls.models import Question

Tal como lo coloca el editor, da error al ejecutar el test.

System check identified no issues (0 silenced).
E
ImportError: Failed to import test module: polls.tests

Se corrige al dejar el import como lo hace el profesor.

	from .models import Question

Veo dos veces al profesor!. Sé que es el mejor y todo pero sucedió algo ahí 😁 (El fondo es OBS)

Este modulo de Django está escrito sobre Pytest, verdad? Su estructura y sintaxis es muy parecida.

Un video muy útil de pytest.
PyConAr 2020 - Unit Testing: Qué Testear y cómo Testear con PyTest
https://www.youtube.com/watch?v=E4Yc8dhM638

AssertFalse funciona tambien