调用assert_时出现问题调用了带有模拟函数的_

2024-04-25 14:04:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个问题,我想在模拟函数上调用assert_调用函数,但是我正在模拟的函数似乎缺少模拟对象的典型属性

def mock_get(address):
   class Response():
       def __init__(self):
           self.status_code = 200
       def json(self):
           dict= {"key":value}
           return json.dumps(dict)
        r = Response()
        return r
with mock.patch.object(requests, 'get', new=mock_get): 
    #call function that uses requests.get
    mock_get.assert_called_with(address)

尝试在mock_get上调用assert_called_with时,会出现一个属性错误,表示mock_get没有名为assert_的函数。有没有一种不用事先使用@patch就可以使用此函数的方法


Tags: 函数selfjsongetreturn属性addressresponse
1条回答
网友
1楼 · 发布于 2024-04-25 14:04:14

没有正确地嘲笑

试着这样做:

with mock.patch("path.to.requests.get") as get:
    get.status_code = 200
    get.json.return_value = {"test_key": "test_value"}
    # call function that uses requests.get
    get.assert_called_once_with("htttps://www.example.org/")

"path.to.requests.get"是查询请求的地方。例如,如果您正在调用的函数是在"./myproject/mymodule.py"的模块中定义的,那么您应该在"myproject.mymodule.requests.get"进行修补

相关问题 更多 >