2

我有一个 Python 方法Pippo,它在执行期间调用其他方法,这些方法返回要处理的数据帧。

我想用自定义数据框模拟每个方法返回,但我不明白如何自动修补它们。

例子:

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 中指出要调用的方法是带有模拟数据框的方法?

我将 Python 2.7 与 Cassandra 一起使用。

对于测试,我使用 unittest。

4

1 回答 1

0

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

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

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

于 2018-02-03T17:16:57.170 回答