【问题标题】:Nose - Is it possible to stub a class constant?鼻子 - 是否可以存根类常量?
【发布时间】:2015-03-21 16:58:08
【问题描述】:

这里是 Nose 框架的 N00b。

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

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

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

【问题讨论】:

    标签: python unit-testing mocking nose stub


    【解决方案1】:

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

    >>> 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 应该可以使上面的代码为您工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-09-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多