#关键参数
name:唯一标识
return_value 当被调用时,返回的值(可为函数)
side_effct = 当存在时,return_value不生效。返回side_effect
导入库
from unittest import mock
使用
## mock = mock.Mock(name=name,return_value=xx,side_effect=xx)
e.g:
1.
class a ():
def add(self,a,b):
return a + b
from xx import a
def test_add():
a.add = mock.Mock(return_value=3)
# 此时,a.add被调用时,返回的就是return_value的值
a.add = mock.Mock(return_value=a.add)
#可返回函数(包括本身),相当于没有使用mock
a.add = mock.Mock(name = xx,return_value=3,side_effect = 7)
#此时返回的事side_effect
@patch快捷使用mock
note:使用@patch,导入的文件,在py层即可,否则容易出错(a.py: import a,不要具体到类或函数)
第一种:mock和函数结合
def fun1():
pass
使用
class test():
@mock.patch('a.fun1')
def test(self,mockfun1):随意命名
mockfun1.return_value = 7
mockfun1.side_effect = xx
第二种:mock和类结合
class name1():
def fun1(self):
pass
使用
class test():
@mock.path.object(a.name1,'fun1'):
def test_a(self,传参):
参数.retur_value
XXXX参考上
第三种:mock和类,函数的结合
class name1():
def func1():
pass
def fun2():
pass
class test():
@mock.patch.object(a.name1,'fun1')
@mock.patch('a.fun2')
def test1(self,param1,param2):
#param1对应 fun2; param2 对应fun1
pass