1

我正在编写一些使用 python unittest 包(Python 2.7)的测试,并且我严重依赖 xmlrunner.XMLTestRunner 来转储 XML 测试输出

不幸的是,我找不到一些基本示例来描述如何将一些命令行选项传递给测试类以参数化一些测试。有人对我如何实现这一点有一些提示(使用 xmlrunner)?

此外,这是我尝试实现的目标:我在以下myunittest.py文件中的一组类中定义我的测试:

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)

并从main.py调用它,如下所示:

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)

非常感谢您的宝贵帮助。

4

1 回答 1

1

经过几个小时的努力,我找到了这个解决方案,这让我很开心。我把它贴在这里,以防有人遇到同样的问题。主要缺点是我似乎需要将所有内容都放在同一个 python 文件中。我像这样运行它:

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

使用 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'))
于 2016-11-02T22:55:23.990 回答