1

Python unittest パッケージ (Python 2.7) を使用するいくつかのテストを作成しており、XML テスト出力をダンプするために xmlrunner.XMLTestRunner に大きく依存しています。

残念ながら、いくつかのコマンドラインオプションをテストクラスに渡していくつかのテストをパラメータ化する方法を説明する基本的な例を見つけることができません。誰かがこれを達成する方法についてヒントを持っていますか (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 に答える