2012-11-13 7 views
3

저는 파이썬 개발에 새로운 것이므로 단위 테스트를위한 함수에 모의 (mocks)를 삽입하는 가장 좋은 방법이 무엇인지 모르겠습니다. 내가 exampleModule.send 방법을 조롱하려는 위의 코드에서모의 객체를 사용하여 파이썬 단위 테스트 함수

import exampleModule 

def func(): 
    ls = createList() 
    exampleModule.send(ls) 

:

나는과 같은 기능을 가지고있다.

함수에 인수로 메서드를 전달해야합니까? 좋아요 :

그리고 단위 테스트에서는 모의 테스트를 통과 할 수 있습니다. 하지만 호출자가 호출 메소드를 지정하는 것을 원하지 않습니다.

올바른 방법은 무엇입니까?

답변

2

파이썬 3의 일부인 Michael Foord가 mock 라이브러리를 사용할 수 있습니다. 이런 종류의 조롱은 매우 편리합니다. 이를 수행하는 한 가지 방법은 다음과 같습니다.

여기서는 컨텍스트 관리자로 사용합니다. 그러나 장식용으로도 patch을 사용하십시오. 그러나 mock을 사용하는 더 많은 방법이 있으며 조롱/스터 빙에서 사용자의 모든 요구를 충족시킬 수 있습니다.

1

Python은 일등급 시민으로서의 기능을 지원하므로 단위 테스트 목적으로 메소드 구현을 무시할 수 있습니다.

This approach basically shows you the way.

class Foo 
    def thing_to_mock(): 
     really_expensive_stuff() 

    def thing_to_test(): 
     i = 1 + 2 
     thing_to_mock() 
     return i 

class FooTest 
    def testingThingToTest(): 
     def mocker(): 
      pass 
     toTest = Foo() 
     toTest.thing_to_mock = mocker 
     # assert here 

또는, 파이썬 3.3에서 당신은 built-in mocking support를 사용할 수 있습니다.

+0

차이점은, 제 경우에는 메소드 (클래스의 함수)를 테스트하는 것이 아니라 상위 수준의 함수를 테스트하는 것입니다. – Prasanna

관련 문제