【发布时间】:2017-11-23 09:06:29
【问题描述】:
我正在使用unittest.mock 库为一个用 Python 3.4 编写的项目编写单元测试。我正在测试的函数包含对函数的调用
versions = get_all_versions(some_argument)
我已经使用返回列表的MagicMock 对象进行了修补,因此version 成为版本号列表,一切正常。
现在,我正在测试的代码发生了一些变化,看起来像
versions = get_all_versions(some_argument).order_by(another_argument)
现在我需要 order_by 方法来返回相同的版本号列表,而 get_all_versions 应该保持模拟,我在实现这一点时遇到了一些问题。
我已经尝试过修补它
get_all_versions = MagickMock()
get_all_versions.order_by = version_list
但这不起作用,我猜这是因为order_by 是一种方法而不是属性。我也试过了
get_all_versions = MagicMock()
get_all_versions.order_by = MagicMock(return_value=version_list)
并且(更绝望地)
get_all_versions = MagicMock(return_value=MagicMock(return_value=version_list))
但是这两个都不起作用。
如何模拟返回对象的函数,然后模拟该对象的方法以使其返回列表?
【问题讨论】:
标签: python python-3.x unit-testing mocking