鼻子 - 是否可以存根 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
具体来说,查看 documentation 的 new
关键字参数到 patch
(或 patch
系列中的任何各种项目)...
我在 python2.x,其中 mock
仍然是第 3 方模块。更改为 from unittest import mock
应该可以让上面的代码为您工作。
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
具体来说,查看 documentation 的 new
关键字参数到 patch
(或 patch
系列中的任何各种项目)...
我在 python2.x,其中 mock
仍然是第 3 方模块。更改为 from unittest import mock
应该可以让上面的代码为您工作。