Ho diversi moduli di test che vengono tutti richiamati tramite uno script del driver che può richiedere una varietà di argomenti. I test stessi sono scritti usando il modulo unittest python.Passare gli argomenti di script Python per testare i moduli
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)
mio problema è che, all'interno di questi moduli di test, ho alcuni test vorrei saltare basato su diversi parametri passati al driver. Sono consapevole che l'unittest fornisce una famiglia di decoratori intenzionati a farlo, ma non conosco il modo migliore per trasmettere queste informazioni ai singoli moduli. Se avessi un argomento --skip-slow
, ad esempio, come avrei potuto annotare i test come lenti e averli saltati?
Grazie per il vostro tempo.
Forse ho trovato una soluzione che è possibile utilizzare. Controlla la mia risposta. –