Tengo un proyecto Django con múltiples aplicaciones. Cada aplicación tiene un conjunto de pruebas de unidad. Estoy usando pytest como mi corredor de prueba. Hemos llegado a un punto en el que queremos comenzar a escribir pruebas de integración. Me preguntaba si hay alguna forma de mantener la convención de nomenclatura y, por lo tanto, el descubrimiento automático de pytest, pero todavía puedo ( ¿A través de la bandera quizás?) para ejecutar los diferentes tipos de prueba. La solución más intuitiva que se me ocurre es algún tipo de decorador en los métodos de prueba o incluso TestCase
Clases (algo así como Categoría en JUnit).
algo como:
@testtype("unittest")
def test_my_test(self):
# do some testing
@testtype("integration")
def test_my_integration_test(self):
# do some integration testing
y luego podría ejecutar la prueba como:
py.test --type=integration
py.test --type=unittest
¿Hay tal cosa?
Si no, la única otra solución que puedo pensares agregar un comando django y "manualmente" construir un testuite y ejecutarlo con pytest ... Preferiría no usar esta opción. ¿Hay alguna otra solución que pueda ayudarme?
Gracias
Respuestas
4 para la respuesta № 1Usted puede marcar las funciones de prueba.
import pytest
@pytest.mark.unittest
def test_my_test(self):
# do some testing
@pytest.mark.integration
def test_my_integration_test(self):
# do some integration testing
Estos marcadores personalizados deben ser registrado en su archivo pytest.ini.
Luego usa el -m
bandera para ejecutar las pruebas marcadas
py.test -v -m unittest
Otra opción sería dividir tus pruebas en unittest
y integration
directorios Luego puedes ejecutar pruebas en un directorio específico con:
py.test -v unittest
o
py.test -v integration