Python模拟类的默认初始化参数

python mock default init argument of class(Python模拟类的默认初始化参数)
本文介绍了Python模拟类的默认初始化参数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想模拟类构造函数中的默认参数:

class A (object):
    def __init__(self, connection=DefaultConnection()):
        self.connection = connection

我想在单元测试中模拟DefaultConnection,但作为默认值传入时无法工作。

推荐答案

您可以使用Patch对patch模块进行补丁,然后将返回值设置为Mock。

# --- a.py (in package path x.y) --
from c import DefaultConnection

class A (object):
    def __init__(self, connection=DefaultConnection()):
        self.connection = connection

#---- a_test.py ----
from mock import patch
from a import A

@patch('x.y.a.DefaultConnection')
def test(def_conn_mock):
  conn_mock = Mock()
  def_conn_mock.return_value = conn_mock

  a_obj = A()
  ....

这篇关于Python模拟类的默认初始化参数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

Initialising MSEdge Browser in python, getting TypeError: Level not an integer or a valid string: None(正在使用Python初始化MSEdge浏览器,获取TypeError:Level不是整数或有效字符串:无)
How to handle initializer error in multiprocessing.Pool?(如何处理多进程.Pool中的初始化器错误?)
How do you initialize a global variable only when its not defined?(如何仅在全局变量未定义时才对其进行初始化?)
What is the suitable value to initialize an empty column of type geometry(初始化类型为GEOMETRY的空列的合适值是多少)
Initialize high dimensional sparse matrix(初始化高维稀疏矩阵)
Initializing task module global in dask worker using --preload?(正在使用--preload初始化DaskWorker中的全局任务模块?)