【发布时间】:2019-11-22 20:07:35
【问题描述】:
# blah app
class MyClass():
def some_method():
pass
# some_app app
from blah.service import MyClass
def some_app_function()
my_class = MyClass()
my_class.some_method()
@pytest.mark.django_db
def test_class_method_called(mocker):
my_class = mocker.patch('some_app.MyClass')
service.some_app_function()
assert my_class.some_method.called # Getting False
我对函数做了完全相同的事情,它可以工作,但called 不是True,当它是类中的方法时。我错过了什么?
【问题讨论】:
-
只需调用方法,这里不需要assert重写。否则,您就是在断言该方法的评估结果是真实的,它总是如此。
-
我想确保在调用
some_app_function时调用了my_class.some_function。我显然在这里举了一个简单的例子,但我的实际要求是我为此断言。 -
这实际上不是 Python 语法,因此很难准确判断您的问题是什么。但是the docs 向您展示了如何调用各种模拟断言方法。
-
我错误地初始化了对象,我猜这可能是不直观的?还有别的吗?
-
我必须做 my_class().some_method.call 参考:stackoverflow.com/a/47606924/1078232