Python模拟数据工具哪些比较好用

今天给大家推荐两款基本的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程序员看。

时间: 2024-08-07 17:52:36

Python模拟数据工具哪些比较好用的相关文章

MySQL实验准备(二)--Python模拟数据(MySQL数据库)

Python模拟数据(MySQL数据库) 数据模拟 目的:模拟多个表的插入和查询数据的模拟,再通过基准测试脚本测试服务器性能和收集数据,仿真模拟. 备注: 如果需要基础的python环境,可以查看<MySQL实验准备(一)--环境准备>文档 实验脚本 通过对一个简单表的脚本插入和查询模拟,后面能 举一反三,完成多张表的多表插入,多线程的多表插入,多线程查询,和多线程的join查询. 数据库的表结构 mysql> show create table zdemo.student; +----

大数据工具千千万,到底谁才是最强王者?

外面有成千上万的大数据工具.它们都承诺可以为你节省时间和资金,并帮助发掘之前从来见过的业务洞察力.虽然确实如此,可是面对那么多的选择,想理清这么多的工具谈何容易. 哪一种工具适合你的技能组合?哪一种工具适合你的项目? 为了替你节省一点时间,并帮助你首次选对工具,我们列出了我们青睐的几款数据工具,涉及数据提取.存储.清理.挖掘.可视化.分析和整合等领域. 数据存储和管理 如果你准备处理大数据,就要考虑该如何存储大数据.大数据得到"大"这个名号,一方面在于,大数据太庞大了,传统系统处理不了

可视化接口管理工具RAP,模拟数据,校验接口

最近看到一个不错的接口管理的工具,分享一下 RAP ppt介绍:http://www.imooc.com/video/11060 RAP是一个可视化接口管理工具 通过分析接口结构,动态生成模拟数据,校验真实接口正确性, 围绕接口定义,通过一系列自动化工具提升我们的协作效率. 使用网址:http://rap.taobao.org/ GitHub地址:https://github.com/thx/RAP 一些文档:https://github.com/thx/RAP/wiki/home_cn 官网:

Python使用FaKer模拟数据!!!

hello,小伙伴们,大家好,今天给大家介绍的开源项目是: Faker,它解决的问题是python模拟(随机)数据!不知道大家在工作中没有用到过假数据,特别前后端开发的人员,应该经常用到,前端人员页面展示,效果展示.后端人员数据库数据模拟.今天给大家介绍的这个项目完美的解决了这个方案,可以模拟多种语言的数据,中文,英文,日语,韩语等等.有兴趣的小伙伴可以下载尝试一下. _|_|_|_| _| _| _|_|_| _| _| _|_| _| _|_| _|_|_| _| _| _|_| _|_|_

lazy-mock ,一个生成后端模拟数据的懒人工具

lazy-mock ??lazy-mock 是基于koa2构建的,使用lowdb持久化数据到JSON文件.只需要简单的配置就可以实现和json-server差不多的功能,但是比json-server更加灵活,后期可配置性更强,完全可以模拟真实后端业务逻辑. ??lazy-mock默认包含了jwt实现的登录与登出,实现了基于RBAC模型的通用权限控制逻辑.具体可查看vue-quasar-admin. Clone git clone https://github.com/wjkang/lazy-mo

浅析HTTP中POST和GET区别并用Python模拟其响应和请求

最近在几周在做手游崩溃信息收集和上传,拿到崩溃信息后,使用的是HTTP的POST方法上传到公司共用的服务器的,因此做简单总结.本文首先简单介绍了HTTP协议,主要说明了POST方法和GET方法的区别:然后用Python实现了 对POST方法和GET方法的响应:最后用Python模拟了POST方法和GET方法的请求. HTTP协议简介 HTTP是Hyper Text Transfer Protocol(超文本传输协议)的缩写,简单来说它是一个应用层的协议,它允许将超文本标记语言(HTML)文档从W

python模拟登录开源中国

我的个人博客( 肥龙的博客)发表了新文章了! 欢迎大家过来阅读,以下是文章的连接地址 http://www.comingcode.com/?p=371 继上一篇文章模拟登录百度空间(http://www.comingcode.com/?p=357)后,为了多点推广自己的博客,通过上网搜索资料和分析http数据包,我再次使用python模拟了开源中国的登录操作,能够发表博客同时也能发送动弹. 具体的实现过程也是和登录百度空间的差不多,都是需要去分析http发送的数据包内容. 通过这两篇文章的模拟登

【Python数据分析】Python模拟登录(一) requests.Session应用

最近由于某些原因,需要用到Python模拟登录网站,但是以前对这块并不了解,而且目标网站的登录方法较为复杂, 所以一下卡在这里了,于是我决定从简单的模拟开始,逐渐深入地研究下这块. 注:本文仅为交流学习所用. 登录特点:明文传输,有特殊标志数据 会话对象requests.Session能够跨请求地保持某些参数,比如cookies,即在同一个Session实例发出的所有请求都保持同一个cookies,而requests模块每次会自动处理cookies,这样就很方便地处理登录时的cookies问题.

用 Python 排序数据的多种方法

用 Python 排序数据的多种方法 目录 [Python HOWTOs系列]排序 Python 列表有内置就地排序的方法 list.sort(),此外还有一个内置的 sorted() 函数将一个可迭代对象(iterable)排序为一个新的有序列表. 本文我们将去探索用 Python 做数据排序的多种方法. 排序基础 简单的升序排序非常容易:只需调用 sorted() 函数,就得到一个有序的新列表: 你也可以使用 list.sort() 方法,此方法为就地排序(并且返回 None 来避免混淆).