我有一个名为Pippo
的Python方法,在执行过程中它会调用其他方法,这些方法返回要处理的数据帧。
我想使用自定义数据帧模拟每个方法返回,但我无法理解如何自动修补它们。
例:
module1.py
import module2
import module3
def Pippo():
returnPluto = module2.Pluto() <---- Wanna mock this Dataframe
....
....
....
returnPaperino = module3.Paperino() <---- Wanna mock this Dataframe
Pluto()
在Pippo
方法的流程中,我调用Pluto
和另一个模块的Paperino
方法。
当我测试 Pippo 时,如何在我的 testClass 中指示要调用的方法就是具有模拟数据帧的方法?
我将Python 2.7与Cassandra一起使用。
对于测试,我使用单元测试。
问题是你在函数中实例化类,这使得模拟变得更加困难,因为当你模拟构造函数时,你会失去对所创建对象的跟踪。所以你必须模拟构造函数并弄清楚如何将return_value
设置为另一个模拟。一种更简单的方法是使用依赖注入。
def Pippo(pluto=None, paperino=None):
pluto = pluto or Pluto()
paperino = paperino or Paperino()
现在在测试中,您可以注入模拟。此更改不会破坏代码,因为注入的参数仅用于测试。