【发布时间】:2018-10-22 11:34:56
【问题描述】:
我有一个依赖于 Python 版本的函数。我想通过模拟sys.version 信息在单元测试中对此进行测试。以下代码有效:
def test_python_version(self):
with patch("sys.version_info", [3]):
my_func()
with patch("sys.version_info", [2]):
my_func()
我想使用装饰器,但是下面的代码不起作用。为什么是这样?如何设置传递给我的测试的 MagicMock 对象的值?谢谢
@patch("sys.version_info")
def test_python_version(self, mock_version_info):
mock_version_info.return_value = [3]
my_func()
mock_version_info.return_value = [2]
my_func()
当my_func 尝试执行if sys.version_info[0] < 3 时,TypeError: '<' not supported between instances of 'MagicMock' and 'int' 失败。
【问题讨论】:
-
修正了我的答案,不便之处敬请见谅。
标签: python python-3.x mocking python-unittest