2013-07-15 4 views
4

저는 비교적 Python을 처음 접했습니다.Python unittest setUp 함수

설정() 테스트 픽스처를 준비하기 위해 호출
방법 : unittest.setUp 문서에 따르면. 이것은 테스트 메소드을 호출하기 직전에 호출됩니다. 이 메서드에 의해 발생 된 예외는 테스트 실패가 아닌 오류로 간주됩니다. 디폴트의 ​​구현은 아무것도 실시하지 않습니다.

다음과 같이 내 질문에 대한 setUp입니다 :

우리의 테스트 코드베이스에서

, 나는 우리가 unittest.TestCase에서 상속하여 파이썬 테스트 프레임 워크를 정의 것을 보았다. 원래 unittest.TestCase의 이름은 setUp이고 tearDown입니다. 맞춤 클래스에는 setUpTestCasetearDownTestCase이 있습니다. 따라서 매번이 두 함수가 원래의 함수 대신 호출됩니다.

내 질문은 :

  1. 어떻게 그 setUptearDown 기능은 기본 테스트 러너에 의해 호출되고있다?
  2. 테스트 사례를 설정하는 데 사용되는 함수는 setUp으로 시작하고 테스트 사례를 분리하는 데 사용되는 함수는 tearDown으로 시작해야합니까? 아니면 어떤 유효한 식별자로 명명 될 수 있습니까?

감사합니다.

답변

7
  1. setUp() 및 tearDown() 메서드는 unittest.TestCase에서 상속 한 클래스에서 사용할 수있는 경우 자동으로 사용됩니다.
  2. 이름은 setUp() 및 tearDown()이어야하며 테스트 메소드가 실행될 때만 사용됩니다.

예 : 답장을 보내

class MyTestCase(unittest.TestCase): 
    def setUp(self): 
    self.setUpMyStuff() 

    def tearDown(self): 
    self.tearDownMyStuff() 

class TestSpam(MyTestCase): 
    def setUpMyStuff(self): 
    # called before execution of every method named test_... 
    self.cnx = # ... connect to database 

    def tearDownMyStuff(self): 
    # called after execution of every method named test_... 
    self.cnx.close() 

    def test_get_data(self): 
    cur = self.cnx.cursor() 
    ... 
+0

감사합니다. 함수 이름을 setUp 및 tearDown으로 시작할 때 자동으로 사용된다는 의미입니까? 그들의 이름은 정확히'setUp'과'tearDown' 만 포함 할 필요는 없습니다.'setUpThisCase' 일 수도 있습니다, 맞습니까? – taocp

+0

setUp() 및 tearDown()은 'test_ham'또는 'test_spam'과 같이 'test_ *'라는 메서드가 실행되기 전과 후에 자동으로 호출됩니다. 나는 다른 질문을 이해하지 못한다. – geertjanvdk

+0

감사합니다. 그 부분을 이해합니다. 내 질문은 : 나는'setUp'의 이름을'setUpTest'와 같은 것으로 변경할 수 있습니까? 가능하다면,이 경우'setUpTest'가 자동으로 사용 되나요? – taocp

관련 문제