简单使用return_value返回固定的数据

  • 方法一,使用装饰器。
1
2
3
4
5
6
7
8
9
import mock
def add(a, b):
return a + b


# 使用mock的return_value参数改变add返回的数据
@mock.patch('add', return_value=10)
def test_add():
print(add(1, 2)) # 10
  • 方法二,使用mock.path方法。
1
2
3
4
import mock
def test_add():
with mock.patch('add', return_value=10):
print(add(1, 2)) # 10

使用side_effect返回可变的数据

  • 当一个方法被同一个测试调用多次,而自己又不想得到同一个返回值,就轮到side_effect上场了。
  • 依次返回list里的数据。
1
2
3
4
5
6
7
8
9
10
11
# 方法一
@mock.patch('add', side_effect=[10, 20])
def test_add():
print(add(1, 2)) # 10
print(add(1, 2)) # 20

# 方法二
def test_add():
with mock.patch('add', side_effect=[10, 20]):
print(add(1, 2)) # 10
print(add(1, 2)) # 20
  • 根据传入的参数返回指定的数据。
1
2
3
4
5
6
7
8
9
10
11
# 方法一
@mock.patch('add', side_effect={(1, 2): 10, (2, 3): 20})
def test_add():
print(add(2, 3)) # 20
print(add(1, 2)) # 10

# 方法二
def test_add():
with mock.patch('add', side_effect={(1, 2): 10, (2, 3): 20}):
print(add(2, 3)) # 20
print(add(1, 2)) # 10