2013-04-17 2 views
1

setUpClass() 메소드의 함수를 실습하고 tearDownClass() 메소드의 함수를 복원하려고합니다.파이썬 단위 테스트 케이스의 클래스 메소드

class MyClass(unittest.TestCase): 

    @classmethod 
    def setUpClass(cls): 

     cls.save_func = module.func 
     module.func = lambda: True 

    @classmethod 
    def tearDownClass(cls): 

     module.func = cls.save_func 

tearDownClass() 방법 후, 나는 실제 함수를 호출 할 module.func()에 대한 호출을 기대했다. 그러나 그렇지 않습니다.

기능을 인쇄하여 일부 디버깅을했습니다. 나는 아래의 출력을 tearDownClass() 메쏘드에서 얻었습니다.

cls.save_func: <unbound method MyClass.save_func> 
module.func: <unbound method MyClass.save_func> 

나는 다른 일을 시도하고 있었고, 난 설정 방법에 클래스 메소드의 방법을 변경 : 놀랍게도

 def setUp(cls): 

     cls.save_func = module.func 
     module.func = lambda: True 


    def tearDown(cls): 

     module.func = cls.save_func 

이 모든 것이 작동하는 것 같군. module.func이 다시 복원되며 인쇄 할 때 기능 주소가 표시됩니다.

module.func <function func at 0x89f9a74> 

문제를 설명해 주시겠습니까?

답변

-1

setUp은 "정적"classmethod이 아니기 때문에 클래스 인스턴스가 필요합니다.

참조 : unittest basic example

+0

웨슬리, 이것을 자세히 설명해 주실 수 있습니까? –

+0

참조 http://stackoverflow.com/questions/1682504/how-to-write-a-stub-for-a-classmethod-in-python –

관련 문제