Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用pytest mock指定模拟函数的返回值?_Python_Python 3.x_Pytest_Pytest Mock - Fatal编程技术网

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到导入函数的文件的路径