2016-11-02 2 views
0

Je vous écris quelques tests qui utilisent le python unittest package (Python 2.7) et je compte beaucoup sur la xmlrunner.XMLTestRunner pour vider la sortie de test XMLarguments de passage à unittest.TestSuite et en utilisant xmlrunner.XMLTestRunner

Malheureusement , Je n'arrive pas à trouver un exemple de base qui décrit comment on peut passer certaines options de ligne de commande à la classe de test pour paramétrer certains des tests. Est-ce que quelqu'un a un indice sur la façon dont je pourrais y parvenir (en utilisant xmlrunner)?

De plus, voici ce que je cherche à atteindre: je définis mes tests dans un ensemble de classes dans le fichier de myunittest.py suivant:

import unittest 
class TestOne(unittest.TestCase): 
    def __init__(self, options=None): 
     unittest.TestCase.__init__(self) 
     self.__options = options 
    def A(self): 
     print self.__options.configXML # try to print the parameter 
     self.assertEqual(1, 1) 

et appellent de la principale . py qui ressemble à:

from optparse import OptionParser 
import unittest 
import xmlrunner 
from uitest import * 

def runit(opt): 
    suite = unittest.TestSuite() 
    suite.addTest(TestOne(options=opt)) 
    testrunner = xmlrunner.XMLTestRunner(output='tests', descriptions=True) 
    unittest.main(testRunner=testrunner).run(suite) 

if __name__ == "__main__": 
    parser = argparse.ArgumentParser(add_help=False) 
    parser.add_argument("-c", "--configXML", dest="configXML", help="xml file") 
    options = parser.parse_args() 
    runit(opt=options) 

Un grand merci pour votre aide précieuse.

Répondre

0

Après plusieurs heures à essayer de comprendre, je suis venu à cette solution, ce qui fait de ma journée. Je poste ici, au cas où quelqu'un viendrait à la même question. Le principal inconvénient est qu'il semble que j'ai besoin de tout avoir dans le même fichier python. et je lance comme:

python test.py --xmlConfig=configFile.xml --xmlRunner 

avec test.py:

import unittest 
import sys 
from optparse import OptionParser 
import xmlrunner 

class MyTests(unittest.TestCase): 
    def testFirstThing(self): 
     xmlConfig=options.xmlConfig 
     self.assertEqual(xmlConfig,"configFile.xml") 

if __name__ == '__main__': 
    parser = OptionParser() 
    parser.add_option("--xmlRunner", "--xmlRunner", help="perform a unittest and generate XML", dest="xmlRunner", default=False, action='store_true') 
    parser.add_option("--xmlConfig", "--xmlConfig", type="string", help="configuration file", dest="xmlConfig", default="config.xml") 

    options, arguments = parser.parse_args() 
    if options.xmlRunner: 
     del sys.argv[1:] 
     unittest.main(testRunner=xmlrunner.XMLTestRunner(output='./xml'))