/ / ejecutando pruebas de integración de unittests en python - python, django, integration-testing, py.test

ejecución de tests de integración unittest en python - python, django, integration-testing, py.test

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 № 1

Usted 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