【发布时间】:2015-03-21 16:58:08
【问题描述】:
这里是 Nose 框架的 N00b。
查看 unittest.mock 的文档,我看不到存根变量的明显方法。我正在测试一个声明了常量的类。一个常量是一个非常大的 int,出于测试目的,我想用一个更小的 int 替换它。
我的理解是你只能模拟(使用@patch 装饰器)一个函数,而不是一个变量。
这可能吗?如果可以,怎么做?
【问题讨论】:
标签: python unit-testing mocking nose stub
这里是 Nose 框架的 N00b。
查看 unittest.mock 的文档,我看不到存根变量的明显方法。我正在测试一个声明了常量的类。一个常量是一个非常大的 int,出于测试目的,我想用一个更小的 int 替换它。
我的理解是你只能模拟(使用@patch 装饰器)一个函数,而不是一个变量。
这可能吗?如果可以,怎么做?
【问题讨论】:
标签: python unit-testing mocking nose stub
您可以使用补丁装饰器来替换常量。例如:
>>> import mock
>>> class Foo(object):
... bar = 1000000
...
>>> with mock.patch.object(Foo, 'bar', 10):
... print(Foo.bar)
...
10
>>> print(Foo.bar)
1000000
具体来说,请查看 documentation 的 new 关键字参数 patch(或 patch 系列中的任何各种项目)...
我在 python2.x 上,mock 仍然是第 3 方模块。更改为from unittest import mock 应该可以使上面的代码为您工作。
【讨论】: