python之mock应用
研发过程中常见分工合作开发接口,但互相之间接口有依赖,这时候便可以使用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
每个人都是一座山 世上最难攀越的山 其实是自己 往上走 即便一小步 也有新高度