es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo se ejecuta un método de una clase si no has instanciado un objeto para esa clase? En referencia a la clase TestCase de Python.

Soy bastante nuevo en Python (y en programación en general), así que esta puede ser una pregunta de principiante, pero tenía entendido que en Python, cuando creas una clase y creas X métodos dentro de ella, si quieres aprovechar esos métodos, necesitas instanciar la clase o crear una instancia de la clase.

Estoy revisando el módulo TestCase (testing goat para TDD) y noto que podemos ejecutar el programa (realiza toda la lógica dentro de los métodos de las clases) sin crear ningún objeto de instancia para “llamar” directamente a esos métodos.

Entonces mi pregunta es… ¿cómo se está ejecutando?

Ej.

class AddStuff(TestCase):

      def test_equal_two(self):
          two = 1 + 1
          self.assertEqual(two, 2)

Cuando ejecuto python manage.py test, esto se ejecutará, aunque no haya creado una instancia de AddStuff… No lo entiendo…

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    En Python, cuando creas una clase y sus métodos, normalmente necesitas instanciar la clase creando una instancia de ella para aprovechar esos métodos. Sin embargo, en el contexto del módulo TestCase, no es necesario crear explícitamente una instancia de la clase de caso de prueba para ejecutar sus métodos.

    Esto se debe a que el módulo TestCase utiliza una configuración donde las instancias de la clase de caso de prueba se crean y se ejecutan automáticamente cuando se ejecuta el comando python manage.py test.

    En otras palabras, el módulo TestCase crea y ejecuta instancias de la clase de caso de prueba por ti en segundo plano, lo que te permite simplemente definir tus pruebas como métodos dentro de una subclase de TestCase y que se ejecuten automáticamente al ejecutar el comando test.

Comments are closed.