python类属性初始化_Python:如何模拟类属性初始化函数
这里实际发生的是当你实际导入模块时,fn()已经执行了.因此,在您已经评估了存储在类属性中的方法之后,模拟就会出现.
因此,当您尝试模拟方法时,您尝试进行的测试为时已晚.
如果只是在方法中添加print语句,甚至可以看到这种情况:
def fn():
print("I have run")
return "asdf"
在您的测试模块中,当您导入并且只是在没有运行测试的情况下运行时,您将看到我已经运行将出现在您的控制台输出中,而无需从模块中明确地运行任何内容.
所以,你可以采取两种方法.您可以使用PropertyMock将类属性模拟为您希望存储的内容,如下所示:
@mock.patch('a.C.cls_var',new_callable=PropertyMock)
def test_mock_fn(self,mocked_p):
mocked_p.return_value = '1234'
self.assertEqual('1234',a.C.cls_var)
现在,你必须要知道,通过这样做,你仍然在运行fn,但是通过这种嘲弄,你现在在cls_var中使用你设置的PropertyMock持有’1234′.
以下建议(可能不太理想,因为它需要进行设计更改)将需要修改您使用类属性的原因.因为如果您实际上将该类属性设置为实例属性,那么当您创建C实例时,您的方法将执行,此时它将使用您的模拟.
所以,你的班级看起来像:
class C:
def __init__(self):
self.var = fn()
你的测试看起来像:
@mock.patch('a.fn',return_value='1234')
def test_mock_fn(self,mocked_p):
self.assertEqual('1234',a.C().var)
python类属性初始化_Python:如何模拟类属性初始化函数相关推荐
- python定义一个类和子类_Python面向对象class类属性及子类用法分析
本文实例讲述了Python面向对象class类属性及子类用法.分享给大家供大家参考,具体如下: class类属性 class Foo(object): x=1.5 foo=Foo() print fo ...
- python3对象初始化_Python 面向对象概念 类和对象 对象初始化__init__ 绑定与非绑定...
面向对象 (Object Oriented Programming,简称OOP) 1.什么是面向对象:面向对象编程是一种思想,它指导程序员如何编写出更好的程序.它的核心是对象,此时程序员从操作者变成了 ...
- python中类的用法_Python中的类和方法使用举例
成员变量 对象的创建 创建对象的过程称之为实例化,当一个对象被创建后,包含三个方面的特性对象聚丙属性和方法, 句柄用于区分不同的对象, 对象的属性和方法,与类中的成员变量和成员函数对应, obj = ...
- python元类的使用_python中元类用法实例
本文实例讲述了python中元类用法,分享给大家供大家参考.具体方法分析如下: 1.元类(metaclass)是用来创建类的类 2.type(object):返回一个对象的类型,与object.__c ...
- python的类和实例_Python 面向对象编程——类和实例
1面向对象编程 面向对象编程: 面向对象编程--Object OrientedProgramming OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数. 面向过程的程序设计把计算机程 ...
- python 常数怎么表达_Python的常数类
我在看这个问题的答案:是否可以在枚举内定义类常量? 最让我感兴趣的是伊桑·弗曼的回答中不断出现的问题. class Constant: def __init__(self, value): self. ...
- python实例变量初始化_Python – 应该在__init__中初始化所有成员变量
也许这更像是一个样式问题,而不是技术问题,但我有一个带有几个成员变量的python类,我想让它工作,以便在用户首次创建类的实例时初始化一些成员变量(即在__init__函数中)我希望从稍后将调用的成员 ...
- python引用类 魔法方法_Python 学习笔记 -- 类的魔法方法
常用魔法方法 含义 __new__(cls[,...]) 1.__new__在对象被实例化时调用 2.第一个参数是类本身,其他参数传入__init__中 3.__new__如果没有返回值,则不会调用_ ...
- python中类和对象_Python里的类和对象简介
---恢复内容开始--- Python里的类 对象=属性+方法: 对象的属性主要是指主要的特征和参量,而方法主要是指函数: 类是一个具有一定特征和方法的集合,而对象是类的一个:类和对象的关系就如同模具 ...
- python中文件分类_Python中的类是否在不同的文件中?
在Python中,一个文件称为 module.一个模块可以由多个类或函数组成. 由于Python不仅仅是一种OO语言,所以没有规则说明,一个文件只能包含一个类. 一个文件(模块)应该包含属于一起的类/ ...
最新文章
- ACM第一名:基于轨迹感知多模态特征的视频关系检测
- 51Nod-1082 与7无关的数【进制+打表】
- android 地图相册,时光地图相册
- 约瑟夫环算法c语言,约瑟夫环的c语言实现(代码已实现)
- C++ STL map的使用
- Android(Java):jni源代码
- 防止a标签跳转的几种方法
- 对于python命令行,你应该这么做才专业
- 关于android系统集成其他传感器
- iOS-属性字符串添加下划线、删除线
- Spring框架学习-Spring和IOC概述
- 《C语言及程序设计》实践参考——太乐了
- 漏洞扫描与云服务器的安全防护
- 【转】和菜鸟一起学linux之DBUS基础学习记录
- 软考之程序语言与语言处理程序总结
- Mysql数据库存储内存调整与优化
- Greensock JavaScript动画教程
- adjoint-io bulletpoofs 性能测试结果
- 日常Bug:0xC0000135
- 配置 sysctl.conf 系统参数详解
热门文章
- C# GDI+ 绘图
- C++中对于类来说头文件(.h)和源文件(.cpp)都应该写些什么 (类的常规创建)
- Android—设计模式原则及常见的设计模式
- 开发基础之使用git把项目提交到github托管
- sharepoint页面嵌入_在SharePoint 2010页面中嵌入SWF文件
- 关于Google插件Postman的使用方法
- html字体代码大全_Vba群发邮件及HTML设置字体格式的代码
- 西部数据硬盘支持linux,西部数据开发新的Linux文件系统“Zonefs” 支持在分区块设备上运行...
- 推流地址 java_Java实现腾讯云直播生成推流地址和播放地址
- Oracle一定有sqlplus吗,oracle sqlplus执行sql文件