文档章节

mock介绍

彩色泡泡糖
 彩色泡泡糖
发布于 06/17 10:00
字数 685
阅读 5
收藏 0

1.mock概念

mock又叫模拟,是Python中一个用于测试的库,它的主要功能是使用mock对象替代掉指定的Python对象,以达到模拟对象的行为; 从Python 3.3开始,mock模块已经被合并到标准库中,被命名为unittest.mock,可以直接import进来使用。Mock对象就是mock模块中的一个类的实例,这个类的实例可以用来替换其他的Python对象,来达到模拟的效果;

2.Mock和MagicMock

  • Mock是一个灵活的模拟对象,用于替换整个代码中存根和测试双精度的使用,模拟是可调用的,并在访问它们时创建属性作为新模拟;

  • MagicMock是一个Mock预先创建并准备使用的所有魔术方法的子类。MagicMock是懒加载的,在没调用magic方法的时候,是不存在这个方法的;

3.mock 使用

场景:当开发一个项目的时候,一个同事开发了数据清洗功能,另外一个同事需要拿到清洗后的数据,完成数据展示。那么这个时候,数据清洗和数据展示这两个功能就存在依赖性,必须是数据清洗完毕之后才能进行数据展示;

首先我们需要创建一个function1.py的模块,然后在这个模块中定义一个数据清洗方法和一个数据展示方法

# 数据清洗功能没有开发完毕
def data_parse():
    pass
# 数据展示功能
def data_show():
    # ret为待mock的数据
    # return是字典模型
    ret = data_parse()
    try:
        if ret.get('result') == "success":
            return "data parse success"
        elif ret.get('result') == "fail":
            print("data parse failed: {}".format(ret.get('reason')))
            return "data parse failed"
        else:
            return "Unknow Reason"
    except:
        return "Server Unknow Reason"

创建一个Test.py模块,在这模块里面创建一个TestData类,继承TestCase类,在这个类中模拟data_parse()函数的返回结果

from unittest import mock
from unittest import TestCase
import unittest
import function1

class TestData(TestCase):
    def test_print1(self):
        function1.data_parse = mock.MagicMock(return_value={"result": "success", "reason":"null"})
        statues = function1.data_show()
        print(statues)
        self.assertEqual(statues, "data parse success")

    def test_print2(self):
        function1.data_parse = mock.MagicMock(return_value={"result": "fail", "reason": "Data Error"})
        statues = function1.data_show()
        self.assertEqual(statues, "data parse failed")

if __name__ == "__main__":
    unittest.main()
  • 先找到要替换的对象;

  • 实例化mock类得到一个mock对象,并且设置这个对象的行为;

  • 使用这个mock对象替换掉我们想替换的对象;

  • 编写测试代码,进行断言;

参考:https://www.9xkd.com/user/plan-view.html?id=2814187020

© 著作权归作者所有

上一篇: 封装mock
彩色泡泡糖
粉丝 2
博文 97
码字总数 110606
作品 0
长沙
私信 提问
Mockjs,再也不用追着后端小伙伴要接口了

相信大家都存在这样的一个困扰,在前后端分离的大环境下, 前端需要后端的接口去完成页面的渲染, 但是大部分的情况下,前后端需要同时进行开发, 这种情况下,后端还没完成数据输出,前端只好写静...

小钱钱阿圣
2017/08/22
0
0
使用 Moq 测试.NET Core 应用 -- 其它

第一篇文章, 关于Mock的概念介绍: https://www.cnblogs.com/cgzl/p/9294431.html 第二篇文章, 关于方法Mock的介绍: https://www.cnblogs.com/cgzl/p/9300356.html 第三篇文章, 关于属性Mock的...

solenovex
2018/07/15
0
0
使用API自动生成工具优化前端工作流

在工作中,我们的前端工作流一般开始于前后端协商好Api文档之后,再针对这个Api文档做mock模拟数据,然后用做好的mock进行开发,后端开发完毕之后再改一下API数据的BaseURL切换到正式API进行...

SHERlocked93
2018/12/06
0
0
Postman Mock Server

为了不影响前端开发的进度,一般后端都是先定数据结构,然后写个假接口让前端调用,这样前端就不必等着后端接口开发完成以后再开始了。届时,前后端以及UI和测试就可以并行,待双方都把各自的...

不要乱摸
04/08
0
0
Mock方法介绍

1 现有的单元测试框架 单元测试是保证程序正确性的一种有效的测试手段,对于不同的开发语言,通常都能找到相应的单元框架。 借助于这些单测框架的帮助,能够使得我们编写单元测试用例的过程变...

不最醉不龟归
2016/11/13
26
0

没有更多内容

加载失败,请刷新页面

加载更多

Qt编写自定义控件34-磁盘容量统计

一、前言 磁盘容量统计控件,说白了,就是用来统计本地盘符占用的容量,包括但不限于已用空间、剩余空间、总大小、已用百分比等,其中对应的百分比采用进度条显示,该进度条的前景色和背景色...

飞扬青云
29分钟前
2
0
tensorflow 安装

https://github.com/tensorflow/tensorflow/releases/tag/v1.14.0 https://developer.nvidia.com/cuda-downloads?target_os=Linux&target_arch=x86_64&target_distro=Ubuntu&target_version=......

mbzhong
30分钟前
1
0
Cross-Site Scripting (XSS)

Cross-Site Scripting (XSS) What Is XSS? Cross-site scripting (XSS) is a type of web application vulnerability that enables the attackers to inject client-side script into web pa......

两广总督bogang
33分钟前
1
0
Java - IO框架

1个字节(byte)由8bit组成 GB2312或GBK编码:1个英文字母1字节,1个汉字2字节 UTF-8编码:1个英文字母1字节,1个汉字3-4字节 UTF-16编码:1个英文字母2字节,1个汉字3-4字节(Unicode扩展区的一...

丰田破产标志
42分钟前
1
0
龙芯电脑安装debian 10

下载安装器 由于debian的内核不能直接使用,因此我们只需要下载initrd.gz和boot.cfg即可。 https://mirrors.tuna.tsinghua.edu.cn/debian/dists/buster/main/installer-mips64el/current/ima...

gugudu
44分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部