鼻子 - 是否可以将类固定为常量?

时间:2015-01-22 18:57:35

标签: python unit-testing mocking nose stub

这里是Noseb的N00b。

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

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

这是可能的,如果是的话,怎么样?

1 个答案:

答案 0 :(得分:2)

您可以使用补丁装饰器替换常量。 e.g:

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

具体来说,请查看new patch关键字参数的documentation patch(或mock系列中的任何不同项目)...

我在python2.x上from unittest import mock仍然是第三方模块。更改为{{1}}应使上述代码适合您。