首页 > 解决方案 > 如何在单元测试中修补整个类

问题描述

在单元测试中,我习惯于写作

def patched_function():
    ...

@patch("package.module.function", new=patched_function)
class TestExample:

然后,每当我正在测试的代码调用 package.module.function 时,它都会调用修补函数。但是,如果我想修补整个班级怎么办?我知道 Mock,但这行不通,因为我正在测试的代码正在实例化该类。我无法控制它。我想我可以这样做:

def PatchedClass():
    def __init__(self):
        # patched constructor

    def method(self):
        # patched method

@patch("package.module.Class", new=PatchedClass)
class TestExample:

我认为这将用我的修补类替换所有实例化给定类的调用。但它似乎没有做任何事情。我怎样才能修补整个班级?

标签: pythonunit-testingmocking

解决方案


推荐阅读