2015-06-11 3 views
2

я получить себе знакомы с UnitTest библиотеки в Python, и я написал на несколько 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 

Теперь, когда ISN что мой код выглядит точно, но это основная структура, которой придерживается.

Я знаю, что если я хочу, чтобы выполнить одну 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, и он делает то, что я хочу сделать без меня, чтобы внести какие-либо изменения в мой код, но я хотел бы знать, есть ли способ запуска тестов из нескольких случаев в наборе без зависимости от внешней библиотеки.

ответ

5

Вы пытались создать TestSuite из списка наборов, созданных с помощью TestLoader? Это пример, адаптированный из документации Python:

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

Спасибо, это именно то, что я искал. –