Testing Python

Testing

El testing implican la ejecución de un componente de software o componente del sistema para evaluar una o más propiedades de interés. En general, estas propiedades indican hasta qué punto el componente o sistema bajo prueba:

 

  • cumple los requisitos que guiaron su diseño y desarrollo,
  • responde correctamente a todo tipo de entradas,
  • realiza sus funciones dentro de un tiempo aceptable
  • se puede instalar y ejecutar en sus entornos previstos
  • logra el resultado general que desean sus partes interesadas.

Niveles de Testing

  • Unit testing
  • Integration testing
  • System testing
  • Operational acceptance testing *

unittest

unittest

unittest es el framework en python que nos permite hacer pruebas soporta:

  • fixtures
  • test cases
  • test suite

  • test runner

unittest

fixtures

representa la prepacion necesaria para ejecutar una o mas pruebas. por ejemplo crear datos, configurar settings, etc 

Los ejemplos mas conocidos de fixtures es el metodo

setUp

unittest

test case

representa una unidad de prueba, comprueba una respuesta especifica para un conjunto de entradas

test Suit

representa el conjuto de test case de una aplicacion

unittest

test runner

orquestador de la ejecucion de pruebas

unittest

test runner

orquestador de la ejecucion de pruebas

unittest

TestCase

Clase Base para genera los test en python

setUp

tearDown

addCleanup

setUpClass

tearDownClass

skipTest

assert*

 

Unit Testing

Unit Testing

Las pruebas unitarias son pruebas que verifican la corrección de piezas individuales de código, como las funciones.

Unit Testing Python

import unittest


def sum_values(*args):
    val = 0
    for i in args:
        val += i
    return val

class TestFunction(unittest.TestCase):

    def test_function(self):
        self.assertEqual(10, sum_values(1,2,3,4))

if __name__ == '__main__':
    unittest.main()

mock

mock

  • patch
  • Mock
  • MagicMock

Mock

Esto permite que los objetos simulados reemplacen contenedores u otros objetos que implementan protocolos de Python.

  • spec
  • return_value
  • side_effect

Mock

  • called
  • call_count
  • return_value
  • side_effect

Patch

Patch es un metodo que nos permite reemplazar el compotamiento de de funciones, metodos y clases, entre otros

  • patch.object
  • patch.dict
  • patch.multiple
  • patch.start
  • patch.stop
  • patch.stopall *

Django Testing

Django Testing

  • SimpleTestCase
  • TransactionTestCase
  • TestCase

SimpleTestCase

Basicamente Cualquier Cosa que no use el ORM

TransactionTestCase

Reset a un estado conocido de la DB

Fixtures

databases

mas assert*

TestCase

Atomico

setUpClassData

Testing Python

By Leonardo Fabio Orozco Padilla