gpt4 book ai didi

python - 使用 mock patch 模拟实例方法

转载 作者:IT老高 更新时间:2023-10-28 21:38:44 31 4
gpt4 key购买 nike

我在测试一个 Django 应用程序时尝试使用富有想象力的 Mock testing library 来模拟一些东西。 .我似乎无法让它工作,我正在尝试这样做:

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):

https://docs.python.org/3/library/unittest.mock.html#patch-object

关于python - 使用 mock patch 模拟实例方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8469680/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com