研发过程中常见分工合作开发接口,但互相之间接口有依赖,这时候便可以使用mock

目录

1、安装

2、使用mock调试自己写的方法

3、使用mock解除依赖关系

1、安装

由于我的是python2.7,则使用pip install -U mock即可完成安装

2、使用mock调试自己写的方法

背景:写了一个求和方法sum,现在要测试

准备工作:demo.py中为demo类有一个sum方法,mock_demo.py用来测试自己写的sum方法

#demo.py

class Demo():
def sum(self,a,b):
return a+b 第一步:使用mock结果写好用例
#mock_demo.py
import mock
import unittest
from demo import Demo class McokDemo(unittest.TestCase)
def test_sum(self):
sum=Demo()
Demo.sum()= mock.Mock(return_value=13)
result=Demo.sum(1,2)
self.assertEqual(result,3)
if __name__='__main__':
unittest.main()
第二步:调用真实方法
#mock_demo.py
import mock
import unittest
from demo import Demo class McokDemo(unittest.TestCase)
def test_sum(self):
sum=Demo()
Demo.sum()= mock.Mock(side_effect=Demo.sum)
result=Demo.sum(1,2)
self.assertEqual(result,3)
if __name__='__main__':
unittest.main()
注意:side_effect参数,它给mock分配了可替换的结果,高于return_value

3、使用mock解除依赖关系

#demo

def se(self,a,b)
m=a+b
n=reduce(a,b)
return(m,n)
def reduce(self,a,b)
n=a-b #demo_mock
from mock import patch
import unittest
from demo import Demo class McokDemo(unittest.TestCase)
@patch("demo.reduce")
def test_se(self,mock_reduce):
a=3
b=2
mock_reduce.return_value=1
m,n=demo.Demo(x,y) self.assertEqual(5,m)
self.assertEqual(1,n) if __name__='__main__':
unittest.main()
@patch("demo.reduce"),这里模拟demo.py文件中reduce()函数. return_value设定mock_reduce函数的返回值为固定的1
 
 

最新文章

  1. [Cordova] 手机网页里的1px
  2. BlockingQueue使用
  3. CC1310之使用SMARTRF STUDIO
  4. 简单几何(向量旋转+凸包+多边形面积) UVA 10652 Board Wrapping
  5. JBPM TaskInstance 对象创建过程
  6. bzoj 2820 YY的GCD(莫比乌斯反演)
  7. Java中怎么控制线程訪问资源的数量
  8. LeetCode 674. Longest Continuous Increasing Subsequence (最长连续递增序列)
  9. KVM之十一:调整cpu和内存
  10. Java并发框架——AQS超时机制
  11. Webpack系列-第三篇流程杂记
  12. PHP7CMS 无条件前台GETSHELL
  13. scala-创建泛型数组(T: Manifest)
  14. 在Windows下使用svn命令行教程及svn命令行的解释
  15. python之event【事件】
  16. python【文件操作:读写文件】
  17. spring aop 样例
  18. WPF中使用WindowChrome自定义窗口中遇到的最大化问题
  19. Threaten Model
  20. svn: None of the environment variables SVN_EDITOR...问题解决

热门文章

  1. php中引入facebook的messenger消息接口
  2. STL容器概述
  3. 03-Django-models
  4. 原生js实现深度克隆
  5. JavaScript生成简单数字验证码
  6. axios 文件流下载
  7. python email模块
  8. LabWindows/CVI 下载
  9. mv - 移动 (改名) 文件
  10. 特殊权限位:suid、sgid、sticky