我有一个名为Pippo
的Python方法,它在执行过程中会调用其他返回要处理的数据帧的方法。
我想用自定义Dataframe模拟每个方法返回,但我无法理解如何自动修补它们。
示例:
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中指出要调用的方法是带有模拟数据帧的方法?
我在Cassandra中使用Python 2.7。
对于测试,我使用unittest。
答案 0 :(得分:0)
问题是你在函数中实例化了类,这使得模拟更难,因为当你模拟构造函数时,你会失去对创建的对象的跟踪。所以你必须模拟构造函数并弄清楚如何将return_value
设置为另一个模拟。更简单的方法是使用依赖注入。
def Pippo(pluto=None, paperino=None):
pluto = pluto or Pluto()
paperino = paperino or Paperino()
现在在测试中你可以注射你的嘲笑。此更改不会破坏代码,因为注入的参数仅用于测试。