【发布时间】:2018-11-08 09:58:43
【问题描述】:
我想通过在单元测试期间替换默认参数的值来测试使用默认参数创建的类。
例如,我想要以下行(整个代码)
obj = SomeClass()
看起来像是用参数调用的
obj = SomeClass(overiden_parameter)
一种解决方案可能是创建简单的子类:
``` def OriginalClass(object):
def __init_(some_param="default_value"):
...
```
``` def MockedOriginalClass(OriginalClass):
def __init_():
super(MockedOriginalClass, self).__init__("some_other_value)
...
```
如何通过代码模拟/修补OriginalClass 成为MockedOriginalClass?请记住,我确实想保留原始类的功能,我想要更改的唯一一件事是它的默认 __init__ 参数。
我觉得这对 Mocking 来说是一件非常简单的事情,我只是不知道该怎么做。
我发现了这个问题: Python unittest mock: Is it possible to mock the value of a method's default arguments at test time?
非常接近,但我认为不能将相同的技巧应用于__init__ 方法。
【问题讨论】:
-
你不能只模拟
SomeClass,然后让模拟就像传入参数一样? -
我认为您可能是对的,我正在研究如何模拟/修补现有的
SomeClass用法,只需修补一个默认输入参数。
标签: python unit-testing mocking