Python pytest patch.object AssertionError from assert_调用_once_with:assertion期望模拟类的实例作为第一个参数
我正在学习Python pytest patch.object AssertionError from assert_调用_once_with:assertion期望模拟类的实例作为第一个参数,python,flask,mocking,pytest,python-unittest,Python,Flask,Mocking,Pytest,Python Unittest,我正在学习unittest.mock,在将mock.patch.object用作装饰器时遇到了问题 我的方法如下所示: @mock.patch.object(app.jira.jira\u client.jira,'search\u users',autospec=True) def test_my_func(自我、模拟搜索用户): 用户电子邮件地址:user@example.com' jira_user=mock.mock() jira_user.displayName='name' mock
unittest.mock
,在将mock.patch.object
用作装饰器时遇到了问题
我的方法如下所示:
@mock.patch.object(app.jira.jira\u client.jira,'search\u users',autospec=True)
def test_my_func(自我、模拟搜索用户):
用户电子邮件地址:user@example.com'
jira_user=mock.mock()
jira_user.displayName='name'
mock_search_users.return_value=[jira_user]
...
...
mock\u search\u users.assert\u调用了一次(user=user\u email,maxResults=1)
...
我得到的错误是:
E AssertionError: expected call not found.
E Expected: search_users(user='user@example.com', maxResults=1)
E Actual: search_users(<jira.client.JIRA object at 0x1103e43a0>, user='user@example.com', maxResults=1)
E断言错误:未找到预期调用。
E应为:搜索用户(用户=)user@example.com,maxResults=1)
E实际:搜索用户(,用户=)user@example.com,maxResults=1)
我不明白为什么它需要JIRA对象引用作为断言的一部分。我一直在研究其他一些问题,比如说,声称这是不可能的,比如方法,以及文档,但我不清楚我需要改变什么
文档中的这一行似乎很相关,但我不确定该如何处理它:
如果patch()用作修饰符,并且省略了new,则创建的mock将作为额外参数传递给修饰函数
我也试过:
- 修补
而不是导入该路径(jira.client.jira
)但这不会改变结果app.jira.jira\u client.jira
- 使用上下文管理器而不是装饰器