Python 模拟:缺少 1 个必需的位置参数

ken*_*eho 6 mocking python-3.x python-unittest

我正在为我的 Flask 项目编写测试,并尝试模拟我的数据库模型。代码看起来像这样:

import unittest.mock

@unittest.mock.patch("server.models.user")
def test_that_response_contain_correct_user_data(self, mocked_user):
Run Code Online (Sandbox Code Playgroud)

这会导致以下错误消息:

TypeError: test_that_response_contain_correct_user_data() missing 1 required positional argument: 'mocked_user'
Run Code Online (Sandbox Code Playgroud)

所以看起来模拟框架没有将模拟数据注入到函数中。有谁知道可能是什么原因造成的?

小智 -3

您需要从 unittest.mock 导入补丁并使用该装饰器注入模拟数据。

from unittest.mock import patch

@patch("server.models.user")
def test_that_response_contain_correct_user_data(self, mocked_user):
Run Code Online (Sandbox Code Playgroud)

  • 因此,您的代码与原始代码之间的唯一区别是您使用“from ... import ...”形式的导入。它如何改变什么? (13认同)