我想通过在单元测试期间替换默认参数的值来测试用默认参数创建的类。你知道吗
例如,我想要下面一行(在整个代码中)
obj = SomeClass()
看起来像是用参数调用的
obj = SomeClass(overiden_parameter)
一种解决方案可能是创建简单的子类:
你知道吗``` 定义原始类(对象):
def __init_(some_param="default_value"):
...
````
你知道吗``` def MockedOriginalClass(原始类):
def __init_():
super(MockedOriginalClass, self).__init__("some_other_value)
...
````
如何模拟/修补OriginalClass
成为MockedOriginalClass
的代码?请记住,我确实希望保留原始类的功能,唯一需要更改的是它的默认__init__
参数。你知道吗
我觉得这是一个非常简单的事情来做嘲笑,我只是不太明白如何做到这一点。你知道吗
我发现了这个问题: Python unittest mock: Is it possible to mock the value of a method's default arguments at test time?
这很接近,但我不认为同样的技巧可以应用于__init__
方法。你知道吗
其中一种方法是模拟整个类进行特定的测试,如下所示:
示例: 我有一门课,我想嘲笑。我的模拟类名是MockSomeClass,它将模拟类SomeClass。你知道吗
因此,在测试期间,您将使用具有重写功能的mock类,而其他函数的行为将保持不变(继承)。你知道吗
修补
捕获因此,在代码中,无论何时创建SomeClass的对象,都将返回mock类的对象。在mock类中,您可以添加自己的功能。你知道吗
看看@Martinj Pieters comment,但是也可以使用pytesthttps://docs.pytest.org/en/documentation-restructure/how-to/monkeypatch.html中支持的monkey patchinghttps://en.wikipedia.org/wiki/Monkey_patch来重写
__init__
方法。你知道吗相关问题 更多 >
编程相关推荐