我有一个使用RealClass的模块,所以它是我无法访问的内部依赖项。如何在Python模块中对类进行桩测试?
我希望能够创建一个FakeClass来替代RealClass的测试功能。我不想取代个别方法,而是取代整个班级。
我看着stubble这似乎是我想要的,但我想知道如果mox或任何其他嘲笑框架有这个功能?或者你会建议使用什么?也许fudge,猴子补丁?只是寻找这些东西的最佳做法。另外任何有用的例子都会很棒。
伪代码:
from module import RealClass
class FakeClass
methodsFromRealClassOverridden
class Test(unittest.TestCase):
setup()
teardown()
test1()
stub(RealClass, FakeClass) // something like this, but really just want the functionality
classThatUsesRealClass // now will use FakeClass
UPDATE:
这里有一种方法我发现做到这一点。这不是完美的,但它的工作原理。
例子:
fake = FakeClass()
stub = stubout.StubOutForTesting()
stub.Set(RealClass, 'method_1', fake.method_1)
stub.Set(RealClass, 'method_2', fake.method_2)
你也许看看'嘲讽'也 – Daenyth
我并不真的需要嘲笑,不需要验证方法被称为等,真的只需要存根功能。 – dre
会像'从FakeClass导入FakeClass作为RealClass'吗? –