我正在尝试使用 pytest、mock 和 drf 测试我的函数是否被端点调用。
我在以下视图中覆盖了 create 方法:
class MyView(viewsets.ModelViewSet):
queryset = MyModel.objects.all()
serializer_class = MySerializer
model = MyModel
def create(self, request, *args, **kwargs):
# some code...
my_function() # I call here
我的功能:
def my_function():
# some code
我的测试:
def test_call_my_func(mocker, client):
mocked_my_func = mocker.patch("my_app.my_file.my_function")
response = client.post(
"/api/v1/my-endpoint/",
data={
# some data
},
format="json",
)
mocked_my_func.assert_called_with("something")
但我得到这个错误:
> mocked_my_func.assert_called_with("something")
E AssertionError: Expected call: my_function('something')
E Not called
使用调试,在同一个测试中,我知道该函数是由端点调用的。