在Python3.x中,mock已经被集成到了unittest单元测试框架中,所以,可以直接使用。

  可能你和我初次接触这个概念的时候会有这样的疑问:把要测的东西都模拟掉了还测试什么呢?

  但在,实际生产中的项目是非常复杂的,对其进行单元测试的时候,会遇到以下问题:

  • 接口的依赖
  • 外部接口调用
  • 测试环境非常复杂

  单元测试应该只针对当前单元进行测试, 所有的内部或外部的依赖应该是稳定的, 已经在别处进行测试过的.使用mock 就可以对外部依赖组件实现进行模拟并且替换掉, 从而使得单元测试将焦点只放在当前的单元功能。

简单示例一:

from unittest.mock import Mock

import unittest

class Count():
def add(self,a,b):
return a+b class test_add(unittest.TestCase): def setUp(self):
pass def tearDown(self):
pass def test_add(self): count=Count() count.add=Mock(return_value=13) result=count.add(4,4) self.assertEqual(result,13) if __name__=='__main__': unittest.main()

  count = Count()

  首先,调用被测试类Count() 。

  count.add = mock.Mock(return_value=13)

  通过Mock类模拟被调用的方法add()方法,return_value 定义add()方法的返回值。

  result = count.add(4,4)

  接下来,相当于在正常的调用add()方法,传两个参数4和4,然后会得到相加的结果8。

  然后,13的结果是我们在上一步就预先设定好的。

  self.assertEqual(result,13)

  最后,通过assertEqual()方法断言,返回的结果是否是预期的结果13。

简单示例二:

from unittest.mock import Mock
from unittest.mock import patch
import unittest class Count():
def add(self,a,b):
return a+b class test_add(unittest.TestCase): def setUp(self):
pass def tearDown(self):
pass @patch.object(Count,'add')
def test_add(self,mock_add): count=Count() mock_add.return_value=13 result=count.add(4,4) self.assertEqual(result,13) if __name__=='__main__': unittest.main()

参考:https://www.cnblogs.com/ajianbeyourself/p/8795441.html

python Mock 示例的更多相关文章

  1. Python Mock的入门学习

    一.Mock是什么 Mock这个词在英语中有模拟的这个意思,因此我们可以猜测出这个库的主要功能是模拟一些东西.准确的说,Mock是Python中一个用于支持单元测试的库,它的主要功能是使用mock对象 ...

  2. Python mock

    在测试过程中,为了更好地展开单元测试,mock一些数据跟对象在所难免,下面讲一下python的mock的简单用法. 关于python mock,网上有很多资料,这里不会讲的特别深,但一定会是实用为主, ...

  3. 使用 Python Mock 类进行单元测试

    数据类型.模型或节点——这些都只是mock对象可承担的角色.但mock在单元测试中扮演一个什么角色呢? 有时,你需要为单元测试的初始设置准备一些“其他”的代码资源.但这些资源兴许会不可用,不稳定,或者 ...

  4. Python Mock的入门(转)

    原文:https://segmentfault.com/a/1190000002965620 Mock是什么 Mock这个词在英语中有模拟的这个意思,因此我们可以猜测出这个库的主要功能是模拟一些东西. ...

  5. 开发神技能 | Python Mock 的入门

    Mock是什么 Mock这个词在英语中有模拟的这个意思,因此我们可以猜测出这个库的主要功能是模拟一些东西.准确的说,Mock是Python中一个用于支持单元测试的库,它的主要功能是使用mock对象替代 ...

  6. Python Mock 的入门

    Mock是什么 Mock这个词在英语中有模拟的这个意思,因此我们可以猜测出这个库的主要功能是模拟一些东西.准确的说,Mock是Python中一个用于支持单元测试的库,它的主要功能是使用mock对象替代 ...

  7. python selenium2示例 - 生成 HTMLTestRunner 测试报告

    前言 在python selenium2自动化测试过程中,一个合适的报告是必须的,而HTMLTestRunner模块为我们提供了一个很好的报告生成功能. 什么是HTMLTestRunner HTMLT ...

  8. 2018-06-29 "西游记"主题Python入门示例尝试-数据结构 5.1-5.1.2

    (见前: 中文代码示例视频演示Python入门第五章 数据结构 仍然基于官方文档, 欢迎建议(尤其是如何取材). 5. Data Structures - More on Lists 列表详述 > ...

  9. redis sentinel 高可用(HA)方案部署,及python应用示例

    redis sentinel(哨兵)高可用集群的部署方法,并通过 python 程序实例讲解如何使用 redis sentinel 简介 介绍 redis sentinel(哨兵)集群的部署,配置一主 ...

随机推荐

  1. 【技术博客】Pytorch代码生成

    开发组在开发过程中,都不可避免地遇到了一些困难或问题,但都最终想出办法克服了.我们认为这样的经验是有必要记录下来的,因此就有了[技术博客]. Pytorch代码生成经验文档 关于模型代码的生成,主要思 ...

  2. TensorFlow2.0初体验

    TF2.0默认为动态图,即eager模式.意味着TF能像Pytorch一样不用在session中才能输出中间参数值了,那么动态图和静态图毕竟是有区别的,tf2.0也会有写法上的变化.不过值得吐槽的是, ...

  3. SNPsnap | 筛选最佳匹配的SNP | 富集分析 | CP loci

    一个矛盾: GWAS得到的SNP做富集分析的话,通常都会有强的偏向性. co-localization of GWAS signals to gene-dense and high linkage d ...

  4. xshell如何导入.xsh 文件

    xshell 不能导入 xsh 文件 导入功能 只能导入 *.xts, *.csv, *.tsv 文件,不能直接导入 .xsh 其实 xsh文件不需要导入,直接拷贝进去就可以了(.xsh 本来就是 x ...

  5. 解决git 出现 Your account has been blocked问题

    使用git 出现 Your account has been blocked 无法从远程pull代码下来, 解决方案如下: $ git push origin masterGitLab: Your a ...

  6. 安全漏洞XSS、CSRF、SQL注入以及DDOS攻击

    随着互联网的普及,网络安全变得越来越重要,程序员需要掌握最基本的web安全防范,下面列举一些常见的安全漏洞和对应的防御措施. 0x01: XSS漏洞 1.XSS简介 跨站脚本(cross site s ...

  7. 往hbase插入数据,你会选择哪种?

    好久,好久没有写个博客了,自从上次封闭开始,到“自闭”,有了一段时间了,哈哈^_^ . 多亏了云桌面的歇菜, 一下午啥都干不了, 突然想到,好久没有写点啥了,就写的,让时间流走有点痕迹吧 _(:з」∠ ...

  8. 阿里云Maven仓库地址setting配置

    <?xml version="1.0" encoding="UTF-8"?> <settings xmlns="http://mav ...

  9. 【转】CAD 二次开发--属性块 Block和BlockReference

    1.属性块的定义 属性块是有构成的实体和附加信息(属性)组成的,属性块中块的定义与简单块中块的定义一样,而属性的定义主要是通过属性的AttributeDefinition类的有关属性和函数来实现的.具 ...

  10. Go 汇编入门

    https://golang.org/doc/asm https://github.com/teh-cmc/go-internals/tree/master/chapter1_assembly_pri ...