2016-07-15 7 views
-1

Я хочу создать тест unittest с двумя различными настройками и tearDown methon в том же классе с двумя разными тестами.Как указать конкретную настройку и отключение теста в python unittest

каждый тест будет использовать свой определенный метод setUp и tearDown в растровой среде python unittest.

может кто-нибудь мне помочь.

class processtestCase(unittest.TestCase): 

     print "start the process test cases " 

     def setUp1(self): 
      unittest.TestCase.setUp(self) 

     def test_test1(self): 
       "test Functinality" 

     def tearDown1(self): 
      unittest.TestCase.tearDown(self) 

     def setUp2(self): 
      unittest.TestCase.setUp2(self) 

     def test_test2(self): 
      "test Functinality" 

     def tearDown2(self): 
      unittest.TestCase.tearDown2(self) ' 

if __name__ == '__main__': 
     unittest.main() 
+0

Не могли бы вы привести пример того, чего вы пытаетесь достичь? Если тесты требуют отдельной настройки и срывают, почему они находятся в одном классе? – jonrsharpe

+0

Нам нужно создать набор тестов, специфичных для функциональности, поэтому мы не должны создавать отдельный класс для каждого теста, но некоторые из этих тестов требуют некоторой настройки, поэтому мне нужно добавить разные теги setUp и tearDown для этих тестов. Как и в TestNg в java, мы можем дать несколько testSetup в одном классе, так что это возможно в python unittest? –

+0

, который не отвечает ни на один из моих вопросов. Приведите несколько примеров. – jonrsharpe

ответ

0

В вопросе вы упомянули, что у вас есть два теста, каждый со своей собственной настройкой и срывом. Есть по крайней мере два пути:

Вы можете вставлять setUp и tearDown код в каждом из тестов:

class FooTest(unittest.TestCase): 
    def test_0(self): 
     ... # 1st setUp() code 
     try: 
      ... # 1st test code 
     except: 
      ... # 1st tearDown() code 
      raise 

    def test_1(self): 
     ... # 2nd setUp() code 
     try: 
      ... # 2nd test code 
     except: 
      ... # 2nd tearDown() code 
      raise 

В качестве альтернативы, вы можете разделить класс на два класса:

class FooTest0(unittest.TestCase): 
    @classmethod 
    def setUp(cls): 
     ... 

    @classmethod 
    def tearDown(cls): 
     ... 

    def test(self): 
     ... 

Первый вариант имеет меньшее количество классов, короче и более прямолинейно. Второй вариант более четко отделяет настройку прибора и очищает его, а затем сам тестовый код. Это также будущие доказательства, добавляющие больше тестов.

Вы должны судить о компромиссах на основе вашего конкретного случая и ваших личных предпочтений.