Pregunta

Estoy desarrollando una aplicación Cherrypy y quiero escribir algunas pruebas automatizadas para ello. Elegí usar nosetests para ello. La aplicación utiliza sqlalchemy como backend de DB, por lo que necesito usar el paquete de fijación para proporcionar conjuntos de datos fijos. También quiero hacer obras web. Así es como lo configuré todo juntos:

Tengo una función de ayudante init_model(test = False) en el archivo donde se crean todos los modelos. Se conecta a la producción o prueba (si test == true o cherrypy.request.app.test == true) base de datos y llamadas create_all

Luego he creado una clase base para pruebas como esta:

class BaseTest(DataTestCase):
def __init__(self):
    init_model(True)
    application.test = True
    self.app = TestApp(application)
    self.fixture = SQLAlchemyFixture(env = models, engine = meta.engine, style = NamedDataStyle())
    self.datasets = (
        # all the datasets go here
        )

Y ahora hago mis pruebas creando clases de niños de Basetest y llamando self.app.some_method()

Esta es la primera vez que hago pruebas en Python y todo esto parece muy complicado. Quiero saber si estoy usando los paquetes mencionados como pretendían sus autores y si no está exagerado.

¿Fue útil?

Solución

Eso se parece principalmente al pegamento de prueba normal para un sistema de cualquier tamaño. En otras palabras, no es demasiado complicado.

De hecho, sugeriría un poco más de complejidad en un aspecto: creo que va a encontrar configurar una nueva base de datos en cada clase de prueba infantil para que sea realmente lento. Es más común configurar al menos todas sus tablas una vez por ejecución en lugar de una vez por clase. Luego, usted hace que cada método de prueba cree todos los datos que necesita por su propio bien, y/o ejecuta cada caso de prueba en una transacción y vuelve a rodarlo en un finally: bloquear.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top