[PYTHON] 파이썬 모의는 다른 함수 내의 함수를 패치한다.
PYTHON파이썬 모의는 다른 함수 내의 함수를 패치한다.
def f1():
return 10, True
def f2():
num, stat = f1()
return 2*num, stat
파이썬의 모의 라이브러리를 사용하여 f1 ()을 패치하고 f2 ()를 테스트 할 수 있도록 사용자 정의 결과를 반환하려면 어떻게해야합니까?
편집 됨 : 내 검사에 문제가 있습니까? 이것은 작동하지 않는 것 같습니다. AssertionError로 모든 테스트가 실패했습니다.
from foo.bar import f2
from mock import patch
class MyTest(TestCase):
def test_f2_1(self):
with patch('project.module.f1') as some_func:
some_func.return_value = (20, False)
num, stat = f2()
self.assertEqual((num, stat), (40, False))
@patch('project.module.f1')
def test_f2_2(self, some_func):
some_func.return_value = (20, False)
num, stat = f2()
self.assertEqual((num, stat), (40, False))
해결법
-
==============================
1.첫 번째 예제는 f1 ()과 f2 ()가 동일한 모듈에 정의되어 있음을 나타냅니다. 따라서 다음과 같이 작동해야합니다.
첫 번째 예제는 f1 ()과 f2 ()가 동일한 모듈에 정의되어 있음을 나타냅니다. 따라서 다음과 같이 작동해야합니다.
from foo.bar import f2 from mock import patch class MyTest(TestCase): @patch('foo.bar.f1') def test_f2_2(self, some_func): some_func.return_value = (20, False) num, stat = f2() self.assertEqual((num, stat), (40, False))
패치는 import와 동일합니다 : @patch ( 'foo.bar.f1')
이 문제에 대한 좋은 대답은 다음과 같습니다.
http://bhfsteve.blogspot.nl/2012/06/patching-tip-using-mocks-in-python-unit.html
-
==============================
2.이 모의 라이브러리를 사용하고 있다고 가정합니다.
이 모의 라이브러리를 사용하고 있다고 가정합니다.
def f1(): return 10, True def f2(): num, stat = f1() return 2*num, stat import mock print f2() # Unchanged f1 -> prints (20, True) with mock.patch('__main__.f1') as MockClass: # replace f1 with MockClass MockClass.return_value = (30, True) # Change the return value print f2() # f2 with changed f1 -> prints (60, True)
코드가 모듈로 나누어 져 있다면 __main __. f1을 모듈 / 함수의 경로로 바꿔야 할 것입니다.
from https://stackoverflow.com/questions/10277397/python-mock-patch-a-function-within-another-function by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] numpy 2D 배열의 열 재정렬 (0) | 2018.10.26 |
---|---|
[PYTHON] 파이썬에서 특정 크기의 파일 만들기 (0) | 2018.10.26 |
[PYTHON] Alexa 용 AWS 람다 함수에 파이썬 라이브러리를 추가하려면 어떻게합니까? (0) | 2018.10.26 |
[PYTHON] 파이썬에서 함수에서 전역 변수를 정의 할 수 있습니까? [닫힘] (0) | 2018.10.26 |
[PYTHON] for 루프에서 pandas 데이터 프레임에 행을 추가하는 방법은 무엇입니까? (0) | 2018.10.26 |