鼻子 - 是否可以存根 class 常量?

Nose - Is it possible to stub a class constant?

N00b 位于此处的 Nose 框架。

查看 unittest.mock 的文档,我没有看到存根变量的明显方法。我正在用声明的常量测试 class。一个常量是一个非常大的 int,出于测试目的,我想用一个小得多的 int 替换它。

我的理解是你只能模拟(使用@patch 装饰器)一个函数,而不是一个变量。

这可能吗?如果可能,怎么做?

您可以使用补丁装饰器来替换常量。例如:

>>> import mock
>>> class Foo(object):
...   bar = 1000000
... 
>>> with mock.patch.object(Foo, 'bar', 10):
...   print(Foo.bar)
... 
10
>>> print(Foo.bar)
1000000

具体来说,查看 documentationnew 关键字参数到 patch(或 patch 系列中的任何各种项目)...

我在 python2.x,其中 mock 仍然是第 3 方模块。更改为 from unittest import mock 应该可以让上面的代码为您工作。