Python 如何使用pytest mock指定模拟函数的返回值?
下面的打印错误。这不是嘲弄的方式吗 我试图更改函数的路径,但它出错了,因此路径似乎是正确的。我错过了什么Python 如何使用pytest mock指定模拟函数的返回值?,python,python-3.x,pytest,pytest-mock,Python,Python 3.x,Pytest,Pytest Mock,下面的打印错误。这不是嘲弄的方式吗 我试图更改函数的路径,但它出错了,因此路径似乎是正确的。我错过了什么 import pytest from deals.services.services import is_user_valid class TestApi: def test_api(self, mocker): mocker.patch('deals.services.services.is_user_valid', return_value=True)
import pytest
from deals.services.services import is_user_valid
class TestApi:
def test_api(self, mocker):
mocker.patch('deals.services.services.is_user_valid', return_value=True)
print(is_user_valid("sdfds", "sdfsdf"))
这里的问题是,您实际上在做以下工作: 从deals.services.services导入是有效的 进口交易、服务、服务 deals.services.services.is\u user\u valid=Mockreturn\u value=True 呼叫本地用户有效吗 通过导入终端符号本身,您减少了模拟的可能性,它现在是本地引用,因此更新远程引用对本地版本没有影响。这意味着您应该在模块本身上保留一个句柄,以便在每次访问时解析相关符号: 从交易、服务到进口服务 def测试模拟机: mocker.patch'deals.services.services.is\u user\u valid',返回值=True printservices.is_user_validsdfdds,sdfsdf 应该会更好 这也是使用此类导入的任何模块的一个问题,它们需要修补使用点而不是定义点,因为在模拟运行时,用户模块已经有了副本
有关更多详细信息,请参阅 这里的问题是,您实际上在做以下工作: 从deals.services.services导入是有效的 进口交易、服务、服务 deals.services.services.is\u user\u valid=Mockreturn\u value=True 呼叫本地用户有效吗 通过导入终端符号本身,您减少了模拟的可能性,它现在是本地引用,因此更新远程引用对本地版本没有影响。这意味着您应该在模块本身上保留一个句柄,以便在每次访问时解析相关符号: 从交易、服务到进口服务 def测试模拟机: mocker.patch'deals.services.services.is\u user\u valid',返回值=True printservices.is_user_validsdfdds,sdfsdf 应该会更好 这也是使用此类导入的任何模块的一个问题,它们需要修补使用点而不是定义点,因为在模拟运行时,用户模块已经有了副本
有关更多详细信息,请参阅 我的实际问题比上面的最小版本更复杂。模拟函数在另一个文件中使用
有帮助的是在函数导入/使用的地方对其进行修补,而不是在定义的地方。因此,请提供mocker.patch到导入函数的文件的路径。我的实际问题比上面的最小版本更复杂。模拟函数在另一个文件中使用 有帮助的是在函数导入/使用的地方对其进行修补,而不是在定义的地方。因此,请提供mocker.patch到导入函数的文件的路径