从多个测试用例创建测试套件

Nik*_*res 2 python python-unittest

我一直熟悉Python中的unittest库,我写了几个unitest.TestCase类似于这个的:

class TestOne(unittest.TestCase):
    def setUp(self):
        pass

    def first_test(self):
        self.assertEqual('a', 'b')

    def second_test(self):
        self.assertEqual('a', 'b')

    def third_test(self):
        self.assertEqual('a', 'b')

    def tearDown(self):
        pass


class TestTwo(unittest.TestCase):
    def setUp(self):
        pass

    def first_test(self):
        self.assertEqual('a', 'b')

    def second_test(self):
        self.assertEqual('a', 'b')

    def third_test(self):
        self.assertEqual('a', 'b')

    def tearDown(self):
        pass


class TestThree(unittest.TestCase):
    def setUp(self):
        pass

    def first_test(self):
        self.assertEqual('a', 'b')

    def second_test(self):
        self.assertEqual('a', 'b')

    def third_test(self):
        self.assertEqual('a', 'b')

    def tearDown(self):
        pass
Run Code Online (Sandbox Code Playgroud)

现在这不是我的代码完全如此,但这是遵循的基本结构.

我知道如果我想执行一个TestCase,我可以这样做:

suite = unittest.TestLoader().loadTestsFromTestCase(TestOne)
unittest.TextTestRunner(verbosity=2).run(suite)
Run Code Online (Sandbox Code Playgroud)

但是,我一直在努力让多个TestCases同时运行.

我试过这样做:

suite = unittest.TestSuite()
suite.addTest(TestOne())
unittest.TextTestRunner(verbosity=2).run(suite)
Run Code Online (Sandbox Code Playgroud)

但是这会引发错误:

ValueError: no such test method in <class 'unit_tests.TestOne'>: runTest
Run Code Online (Sandbox Code Playgroud)

我知道runTest如果我每个案例只有一个测试,我会使用一种方法,但我有几个,所有这些都需要在一个内部进行自己的测试TestCase.

我试过仔细阅读unittest文档,但是我无法弄清楚如何从单个测试套件中的多个测试用例中运行测试.

我已经看过了nosetests,如果没有我对代码进行任何修改,我会做我想做的事情,但是我想知道是否有办法从套件中的多个案例运行测试而不依赖于外部图书馆.

小智 6

您是否尝试使用TestLoader创建的套件列表创建TestSuite?这是一个改编自Python文档的示例:

suite1 = unittest.TestLoader().loadTestsFromTestCase(TestOne)
suite2 = unittest.TestLoader().loadTestsFromTestCase(TestTwo)
alltests = unittest.TestSuite([suite1, suite2])
Run Code Online (Sandbox Code Playgroud)