【问题标题】:Unittest python method for return mocked Dataframe用于返回模拟数据框的单元测试 python 方法
【发布时间】:2018-07-12 06:22:18
【问题描述】:

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

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

我使用 Python 2.7 和 Cassandra。

对于测试,我使用 unittest。

【问题讨论】:

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


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-09-20
    • 2014-04-16
    • 1970-01-01
    • 2015-10-21
    • 2021-07-01
    • 2016-01-26
    • 1970-01-01
    相关资源
    最近更新 更多