从多个测试用例创建测试套件
Creating a test suite from multiple test cases
我已经熟悉了 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
,它完成了我想做的事情而无需对我的代码进行任何修改,但我想知道是否有办法 运行 在不依赖外部库的情况下从套件中的多个案例进行测试。
您是否尝试从使用 TestLoader 创建的套件列表中创建一个 TestSuite?这是改编自 Python 文档的示例:
suite1 = unittest.TestLoader().loadTestsFromTestCase(TestOne)
suite2 = unittest.TestLoader().loadTestsFromTestCase(TestTwo)
alltests = unittest.TestSuite([suite1, suite2])
我已经熟悉了 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
,它完成了我想做的事情而无需对我的代码进行任何修改,但我想知道是否有办法 运行 在不依赖外部库的情况下从套件中的多个案例进行测试。
您是否尝试从使用 TestLoader 创建的套件列表中创建一个 TestSuite?这是改编自 Python 文档的示例:
suite1 = unittest.TestLoader().loadTestsFromTestCase(TestOne)
suite2 = unittest.TestLoader().loadTestsFromTestCase(TestTwo)
alltests = unittest.TestSuite([suite1, suite2])