회원가입

3. 파이썬 MagicMock

NULL 2022-05-15

 

파이썬에는 매직 메서드(macig method)라는 개념이 있다.

모든 객체에는 언어 레벨에서 특수한 목적으로 쓰이는 메서드들을 정의할 수 있다.

 

대표적으로 __str__ 의 경우, 객체를 읽기 좋은 형태의 문자열로 출력하기 위해서 사용되는 매직 메서드이다.

 

[__str__ 예제]

class NullBlog:
    pass

null_blog = NullBlog()
print(null_blog)
# 결과:
# <__main__.NullBlog object at 0x000002A999E9B6C8>

######################################################

class NullBlog:
    def __str__(self):
        return "Null's Blog"

null_blog = NullBlog()
print(null_blog)
# 결과:
# Null's Blog

 

 

기본적으로 Mock 클래스를 사용하면 이러한 매직 메서드가 자동으로 모킹되지 않는다.

from unittest.mock import Mock
mock = Mock()
mock.__str__.return_value

 

하지만 Mock 클래스의 확장 버진인 MagicMock 클래스를 사용하면 이러한 매직 메서드를 미리 알아서 모킹을 해놓기 때문에 편리하다.

from unittest.mock import MagicMock
mock = MagicMock()
mock.__str__.return_value
mock.__str__.return_value = "I'm a magic mock."
str(mock)

 

실제 프로젝트에서 Unit Test 를 작성할 때는 이렇게 직접 Mock 을 생성하는 것 보다는 patch() 데코레이터를 사용하는 것이 일반적이다.

 

참고 링크: https://www.daleseo.com/python-unittest-mock/

0 0
테스트
테스트를 작성해야 하는 이유는 정말 너무 많다. 개발 관점으로 다양한 테스팅에 과정에 대해 필자가 공부한 것을 토대로 포스팅한 게시판이다.
Yesterday: 1
Today: 249