반응형
모의 패치를 사용하여 인스턴스 메서드 모의
상상적으로 명명 된 Mock testing library를 사용하여 Django 앱을 테스트하는 동안 무언가를 조롱하려고합니다 . 제대로 작동하지 않는 것 같습니다. 이렇게하려고합니다.
models.py
from somelib import FooClass
class Promotion(models.Model):
foo = models.ForeignKey(FooClass)
def bar(self):
print "Do something I don't want!"
test.py
class ViewsDoSomething(TestCase):
view = 'my_app.views.do_something'
def test_enter_promotion(self):
@patch.object(my_app.models.FooClass, 'bar')
def fake_bar(self, mock_my_method):
print "Do something I want!"
return True
self.client.get(reverse(view))
내가 도대체 뭘 잘못하고있는 겁니까?
Kit의 답변에 추가하려면 세 번째 인수를 지정 patch.object()
하여 모의 객체 / 메소드를 지정할 수 있습니다. 그렇지 않으면 기본 MagicMock
개체가 사용됩니다.
def fake_bar(self):
print "Do something I want!"
return True
@patch.object(my_app.models.FooClass, 'bar', fake_bar)
def test_enter_promotion(self):
self.client.get(reverse(view))
# Do something I want!
모의 객체를 지정하면 기본값 MagicMock()
이 더 이상 패치 된 객체에 전달되지 않습니다. 예를 들어 더 이상 :
def test_enter_promotion(self, mock_method):
대신 :
def test_enter_promotion(self):
http://www.voidspace.org.uk/python/mock/patch.html#patch-object
아, 패치 데코레이터를 어디에 적용해야하는지 혼란 스러웠습니다. 결정된:
class ViewsDoSomething(TestCase):
view = 'my_app.views.do_something'
@patch.object(my_app.models.FooClass, 'bar')
def test_enter_promotion(self, mock_method):
self.client.get(reverse(view))
참고URL : https://stackoverflow.com/questions/8469680/using-mock-patch-to-mock-an-instance-method
반응형
'IT박스' 카테고리의 다른 글
Binary Space Partitioning, Quadtree, Octree를 언제 사용합니까? (0) | 2020.11.12 |
---|---|
"정적 컨텍스트에서 비 정적 메서드를 참조 할 수 없습니다."오류 (0) | 2020.11.12 |
자식이 내가 이름을 변경했다고 생각하는 것을 어떻게 막을 수 있습니까? (0) | 2020.11.12 |
하나의 메이븐 프로필이 다른 프로필을 활성화하도록 할 수 있습니까? (0) | 2020.11.12 |
런타임에 Java 주석 추가 (0) | 2020.11.12 |