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

时间:2015-06-11 22:09:08

标签: 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

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

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

suite = unittest.TestLoader().loadTestsFromTestCase(TestOne)
unittest.TextTestRunner(verbosity=2).run(suite)

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

我试过这样做:

suite = unittest.TestSuite()
suite.addTest(TestOne())
unittest.TextTestRunner(verbosity=2).run(suite)

但是这会引发错误:

ValueError: no such test method in <class 'unit_tests.TestOne'>: runTest

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

我尝试了unittest文档,但是我无法弄清楚如何从单个测试套件中的多个测试用例中运行测试。

我看过nosetests,如果没有我对代码进行任何修改,我就会做我想做的事情,但我想知道是否有办法从多个案例中运行测试在不依赖外部库的套件中。

1 个答案:

答案 0 :(得分:6)

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

suite1 = unittest.TestLoader().loadTestsFromTestCase(TestOne)
suite2 = unittest.TestLoader().loadTestsFromTestCase(TestTwo)
alltests = unittest.TestSuite([suite1, suite2])