Tengo varios módulos de prueba que se invocan todos juntos a través de un script del controlador que puede tomar una variedad de argumentos. Las pruebas en sí están escritas usando el módulo python unittest.Pasar los argumentos del script de python a los módulos de prueba
import optparse
import unittest
import sys
import os
from tests import testvalidator
from tests import testmodifier
from tests import testimporter
#modify the path so that the test modules under /tests have access to the project root
sys.path.insert(0, os.path.dirname(__file__))
def run(verbosity):
if verbosity == "0":
sys.stdout = open(os.devnull, 'w')
test_suite = unittest.TestSuite()
test_suite.addTest(unittest.TestLoader().loadTestsFromTestCase(testvalidator.TestValidator))
test_suite.addTest(unittest.TestLoader().loadTestsFromTestCase(testmodifier.TestModifier))
test_suite.addTest(unittest.TestLoader().loadTestsFromTestCase(testimporter.TestDataImporter))
unittest.TextTestRunner(verbosity=int(verbosity)).run(test_suite)
if __name__ == "__main__":
#a simple way to control output verbosity
parser = optparse.OptionParser()
parser.add_option("--verbosity", "--verbosity", dest="verbosity", default="0")
(options, args) = parser.parse_args()
run(options.verbosity)
Mi problema es que, dentro de estos módulos de prueba, tengo ciertas pruebas que me gustaría saltar en base a diferentes parámetros pasados al controlador. Soy consciente de que unittest proporciona una familia de decoradores con la intención de hacer esto, pero no sé cuál es la mejor manera de pasar esta información a los módulos individuales. Si tuviera un argumento --skip-slow
, por ejemplo, ¿cómo podría anotar las pruebas como lento y hacer que se salten?
Gracias por su tiempo.
Es posible que haya encontrado una solución que pueda usar. Verifica mi respuesta. –