Python mock 的使用
使用 mock 对象替换系统的一部分并且能获取它们的使用情况。
具体的说,你可以获取方法/属性的使用情况以及它们的调用参数。也可以指定返回值和设置属性。
思路是将对象设置为 mock 对象,然后根据需要配置 mock 对象,比如返回值、异常等。
设置类方法的返回值并验证被调用过
# -*- coding: utf-8 -*-
from unittest.mock import MagicMock
class ProductionClass:
def method(self, arg1, arg2, key):
pass
thing = ProductionClass()
# thing.method 现在指向一个 MagicMock 实例,当这个实例被调用时返回 3
thing.method = MagicMock(return_value=3)
print(thing.method(3, 4, key='value')) # 3
thing.method.assert_called_with(3, 4, key='value')
设置调用 mock 后的副作用
side_effect 可以是一个函数、iterable 或 exception(类或实例)。
详情见:https://docs.python.org/3/library/unittest.mock.html#unittest.mock.Mock.side_effect
使用装饰器和上下文管理器
上面『设置类方法的返回值并验证被调用过』比较啰嗦且不利用复用,所以改写为装饰器或者
上下文管理器。
装饰器:
# -*- coding: utf-8 -*-
from unittest.mock import patch
from strategy.module import ProductionClass
@patch('strategy.module.ProductionClass.method', return_value=3)
def test(method):
print(ProductionClass().method(3, 4, key='value')) # 3
method.assert_called_with(3, 4, key='value')
test()
上下文管理器:
# -*- coding: utf-8 -*-
from unittest.mock import patch
from strategy.module import ProductionClass
def test():
with patch.object(ProductionClass, 'method', return_value=3) as mock_method:
print(ProductionClass().method(3, 4, key='value')) # 3
mock_method.assert_called_with(3, 4, key='value')
test()
对于其他对象,比如函数,只需要将 patch 中的路径变为函数的路径即可。
Python mock 的使用的更多相关文章
- Python mock
在测试过程中,为了更好地展开单元测试,mock一些数据跟对象在所难免,下面讲一下python的mock的简单用法. 关于python mock,网上有很多资料,这里不会讲的特别深,但一定会是实用为主, ...
- 使用 Python Mock 类进行单元测试
数据类型.模型或节点——这些都只是mock对象可承担的角色.但mock在单元测试中扮演一个什么角色呢? 有时,你需要为单元测试的初始设置准备一些“其他”的代码资源.但这些资源兴许会不可用,不稳定,或者 ...
- Python Mock的入门(转)
原文:https://segmentfault.com/a/1190000002965620 Mock是什么 Mock这个词在英语中有模拟的这个意思,因此我们可以猜测出这个库的主要功能是模拟一些东西. ...
- Python Mock的入门学习
一.Mock是什么 Mock这个词在英语中有模拟的这个意思,因此我们可以猜测出这个库的主要功能是模拟一些东西.准确的说,Mock是Python中一个用于支持单元测试的库,它的主要功能是使用mock对象 ...
- 开发神技能 | Python Mock 的入门
Mock是什么 Mock这个词在英语中有模拟的这个意思,因此我们可以猜测出这个库的主要功能是模拟一些东西.准确的说,Mock是Python中一个用于支持单元测试的库,它的主要功能是使用mock对象替代 ...
- Python Mock 的入门
Mock是什么 Mock这个词在英语中有模拟的这个意思,因此我们可以猜测出这个库的主要功能是模拟一些东西.准确的说,Mock是Python中一个用于支持单元测试的库,它的主要功能是使用mock对象替代 ...
- python mock模块使用(二)
本篇继续介绍mock里面另一种实现方式,patch装饰器的使用,patch() 作为函数装饰器,为您创建模拟并将其传递到装饰函数 官方文档地址 patch简介 1.unittest.mock.patc ...
- python mock模块使用(一)
什么是mock unittest.mock是一个用于在Python中进行单元测试的库,Mock翻译过来就是模拟的意思,顾名思义这个库的主要功能是模拟一些东西. 它的主要功能是使用mock对象替代掉指定 ...
- 一文熟练使用python mock
mock作为python测试模拟对象工具,在单元测试当中使用较多,官方文档详细不够精简,这篇文章介绍mock常用的用法,以下为引用全文,留给自己和有需要的人查阅. https://realpython ...
随机推荐
- linux命令小技巧
一:命令行里怎么往上翻页 Shift+PageUP|PageDown 二:分页显示文件内容则可以用less工具过滤,然后用方向键或PageUp/PageDown上下翻 less /etc/passwd ...
- tomcat中的Manager App帐号password管理
tomcat根文件夹下的conf文件夹下有个tomcat-users.xml文件 填写内容例如以下 <? xml version='1.0' encoding='utf-8'? >< ...
- [svc]jdk1.7.0_13(系列)下载url
蛋疼了,这个版本,找了老半天没找到 最后是同事找到的 http://download.oracle.com/otn/java/jdk/7u13-b20/jdk-7u13-linux-x64.tar.g ...
- Ubuntu编绎 Objective C程序
1.安装如下组件 sudo apt-get install如下组件:build-essential gobjc gobjc++ gnustep-devel 2.在工作目录建立下如Shell脚本,并更改 ...
- C# 执行多条SQL更新语句,实现数据库事务
class Program { class Result<T> { public T data; public string Message; public bool Success; p ...
- 文件上传之 commons-fileupload(一)
一 .简单介绍 使用最为广泛的Java文件上传组件,Struts本身采用这个包来处理文件上传.其基本原理: FileUpload组件将页面提交的所有元素(普通form表单域,如text和文 ...
- string.erase()--已解决
在代码中需要实现这样一个功能,需要将[00000001]这个存储在string中的字符串的中括号去掉,首先想到的就是string.erase()这个函数.结果... 代码: #include < ...
- CCNA2.0笔记_HSRP
什么是HSRP协议? HSRP也叫热备份路由协议,即第一跳冗余协议,第一跳实际就是网关.从而实现网关的冗余和自动切换.该协议确保了当网络边缘设备或接入链路出现故障时,用户通信能迅速并透明地恢复,并以此 ...
- CSRF学习笔记之CSRF的攻击与防御以及审计【00x1 】
+++++++++++++++++++++++++++ + 00x1 实现简单的攻击 + 00x2 代码审计漏洞的源头 +++++++++++++++++++++++++++ 00x1 简单的csrf ...
- 有效提升大数据量写入excel的效率
在开发过程中经常会有需要将数据导出到 excel 的需求,当数据量很大,达到几万甚至几十万.几百万级别的时候,如何加快生成 excel 的速度呢?首先普及一下知识背景:Excel2003 及以下版本一 ...