今天给大家推荐两款基本的Python模拟数据工具:mock和pytest monkeypatch。

为什么要模拟数据?

我们的应用中有一些部分需要依赖外部的库或对象。为了隔离开这部分,我们需要代替这些外部依赖,因而就用到了模拟数据。我们模拟外部的API来产生特定的行为,比如说返回符合之前定义的恰当的返回值。

模拟函数

我们有一个function.py的模块:

然后我们来看下如何将其与Mock库结合使用的:

这里发生了什么?1-4行是为了兼容python 2和3来引入的代码,在python 3中mock是一个标准库,而在python 2中你需要手动安装(pip install mock)。

第13行对square函数调用mock的Patch方法,一定要在使用该函数的地方调用patch方法。比如,我将在程序自身中调用square(5)

函数,因而我在__main__中使用patch,举例来说python tests/test_function.py。而如果我使用pytest的

话,那么我将使用test_function.square来替换此处的__main__.square。

在第18-19行,我针对square和cube方法调用了patch函数,因为它们将在main函数中被使用。最后的两个assert语句是为了确保mock被恰当地使用。

同样也可以用monkeypatching来完成此工作:

你能看到我使用monkeypatch.setattr来针对给定的函数设置返回值,同样我也需要在恰当的地方调用monkeypatch函数。

模拟类

我有一个名叫square的模块:

使用方法如下:

在第13行我对类Square进行patch,而15和16行表示了mocking的实例,首先mocked_instance是一个模拟对

象,针对mock.calculate_area我添加了return_value的值为1.在23行我使用MagicMock方法,它同样是一个标准的

mock类,只是它可以从一个给定的对象中检索出相应的方法。最后我使用patch.object来模拟Square类中的方法。

Pytest中代码如下:

这里的问题在于test_mocking_class_methods在python 3中工作正常,但是python 2中却不行。目前我还没有太想清楚这一点,希望你能帮助我!

所有的示例都能在这里找到。

顺便再给大家推荐一个Python视频教程:http://www.maiziedu.com/course/python/里面有各种Python基础知识讲解和Python开发项目,非常适合菜鸟和Python程序员看。

python比较数据工具_Python模拟数据工具哪些比较好用相关推荐

  1. 与python相关的爬虫工具_python爬虫常用工具集合

    一.常用模块 1.requests模块,网络请求 Requests是用python语言基于urllib编写的,采用的是Apache2 Licensed开源协议的HTTP库,Requests它会比url ...

  2. python自然语言处理库_Python自然语言处理工具库(含中文处理)

    自然语言处理(Natural Language Processing,简称 NLP),是研究计算机处理人类语言的一门技术.随着深度学习在图像识别.语音识别领域的大放异彩,人们对深度学习在 NLP 的价 ...

  3. python代码覆盖率工具_Python代码覆盖率分析工具Coverage

    简介 在测试中,为了度量产品质量,代码覆盖率被作为一种测试结果的评判依据,在Python代码中用来分析代码覆盖率的工具当属Coverage.代码覆盖率是由特定的测试套件覆盖被测源代码的程度来度量,Co ...

  4. python抓取数据包_python抓数据包

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 前言:数据科学越来越火了,网页是数据很大的一个来源. 最近很多人问怎么抓网页数据 ...

  5. python矩阵sin计算器_Python科学计算工具

    Python科学计算工具-Numpy入门 2017.07.02 20:29:14字数 1,404阅读 2,509 一:前言 学了中国大学mooc的Python数据分析与展示课程感觉挺不错的,记录下来以 ...

  6. python提取数据段_python提取数据段 python数据分析

    如何在python中用slice分段取数据? 执行以下操作:&gt&gt a=range(6)&gt&gt a[0, 1, 2, 3, 4,5]&gt& ...

  7. python数据预处理_Python数据分析——数据预处理的方法

    前言 1. 关于数据集 数据来源:日月光华老师的<Python数据分析从入门到机器学习>的 lianjia 数据. 数据概况: cjtaoshu:成交套数 mendian:门店 cjzon ...

  8. python 导入离线地图_Python绘制数据地图可以应用与各种场景,只需要更改数据就行。...

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 主要用到的新的Python模块是Geopandas,就是利用它来绘制数据地 ...

  9. python的pip指令_python的pip工具命令有哪些

    python的pip工具命令有:1.install命令,用于安装库:2.download命令,用于下载库:3.uninstall命令,用于卸载库:4.freeze命令,用以requirements格式 ...

最新文章

  1. 【C#】Gif文件生成
  2. 山水人家(附简要教程)
  3. 步步为营-104-SQL语句(截取字符串)
  4. c/c++在windows下获取时间和计算时间差的几种方法总结
  5. PyTorch机器学习从入门到实战
  6. Centos 编译安装nodejsexpress框架
  7. Windows 7 安装 .NET 5 / .NET Core 3.1 环境的方法和依赖文件
  8. 培智计算机教学论文,【培智数学论文】_培智数学教学论文
  9. LwIP应用开发笔记之八:LwIP无操作系统HTTP客户端
  10. MTK 驱动(63)---MTK TP驱动移植
  11. Maintenance Plans(维护计划)详解【转】
  12. css伪元素总结(内附实例)
  13. 面向计算机视觉的深度学习 | iBooker·ApacheCN
  14. docx文档文字怎么加边框_Word技巧:怎么给文本加方框
  15. Perl教程-1.Perl简介
  16. 【重磅整理】180篇NeurIPS2020顶会《强化学习领域》Accept论文大全
  17. 为什么我停掉孩子所有的兴趣班,也没停掉编程!
  18. 微信云开发之小游戏排行榜的实现,云数据库,云函数【白玉无冰】每天进步一点点
  19. sci论文、ei论文和ieee论文三者之间有什么区别?
  20. 浅谈Actor并发模型

热门文章

  1. 高效办公,从几行批处理命令开始 | 原力计划
  2. 阿里云河源数据中心正式开服 疫情期间曾2小时扩容1万台云服务器
  3. 中文版开源!这或许是最经典的 Python 编程教材
  4. Chronicle 已死,凶手是谷歌!
  5. 张小龙的区区一件衣服竟然能引起这么大骚动
  6. 如何巧用区块链密码学避免数据“裸奔”?
  7. 详解 C++ 的隐式类型转换与函数重载!
  8. Python 3.8 新功能大揭秘
  9. Google 要进军游戏行业了?!
  10. 高性能访客记录系统如何设计?