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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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程序员看。

以上是关于Python模拟数据工具哪些比较好用的主要内容,如果未能解决你的问题,请参考以下文章

有哪些好用的机器学习和数据挖掘工具?

python 比较好用的库都有哪些

国内外都有哪些比较好用的bi数据分析工具

全自动建模工具都有哪些好用的推荐?

数据分析软件有哪些,哪个比较好用?

Appium+python自动化- 模拟器(超详解)