用于返回模拟Dataframe

时间:2018-02-01 20:15:18

标签: python-2.7 unit-testing cassandra python-unittest magicmock

我有一个名为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方法的流程中,我调用另一个模块的PlutoPaperino方法。

当我测试Pippo时,我如何在我的testClass中指出要调用的方法是带有模拟数据帧的方法?

我在Cassandra中使用Python 2.7。

对于测试,我使用unittest。

1 个答案:

答案 0 :(得分:0)

问题是你在函数中实例化了类,这使得模拟更难,因为当你模拟构造函数时,你会失去对创建的对象的跟踪。所以你必须模拟构造函数并弄清楚如何将return_value设置为另一个模拟。更简单的方法是使用依赖注入。

def Pippo(pluto=None, paperino=None):
  pluto = pluto or Pluto()
  paperino = paperino or Paperino()

现在在测试中你可以注射你的嘲笑。此更改不会破坏代码,因为注入的参数仅用于测试。