将模拟调用的一部分定义为默认值
Defining part of a mock call as default values
我正在编写单元测试以确保使用正确的参数调用模拟方法。
我的部分单元测试如下所示:
response = MagicMock(name='response', status_code=200)
# Make some calls
expected_calls = [
call(
"X",
"1",
domain="mywebsite.com",
httponly=True,
max_age=1000,
path="/",
secure=False,
),
call(
"Y",
"2",
domain="mywebsite.com",
httponly=True,
max_age=1000,
path="/",
secure=False,
),
]
response.set_cookie.assert_has_calls(expected_calls)
也就是说,只有这些调用对象的key和value发生变化。
我怎样才能得到以下形式的东西:
default_values = {...}
expected_calls = [
call(
"X",
"1",
default_values,
),
call(
"Y",
"2",
default_values,
),
]
你快到了,也许你不知道你可以 star unpack 你 default_values
dict。 Python 控制台的一个简单示例如下:
>>> d1 = dict(a=1, b=2)
>>> from unittest.mock import call
>>> call(1, 10, **d1)
call(1, 10, a=1, b=2)
>>>
其中 d1
将是您的 default_values
。
这是可能的,因为 Python 3.5 根据 PEP448
我正在编写单元测试以确保使用正确的参数调用模拟方法。
我的部分单元测试如下所示:
response = MagicMock(name='response', status_code=200)
# Make some calls
expected_calls = [
call(
"X",
"1",
domain="mywebsite.com",
httponly=True,
max_age=1000,
path="/",
secure=False,
),
call(
"Y",
"2",
domain="mywebsite.com",
httponly=True,
max_age=1000,
path="/",
secure=False,
),
]
response.set_cookie.assert_has_calls(expected_calls)
也就是说,只有这些调用对象的key和value发生变化。
我怎样才能得到以下形式的东西:
default_values = {...}
expected_calls = [
call(
"X",
"1",
default_values,
),
call(
"Y",
"2",
default_values,
),
]
你快到了,也许你不知道你可以 star unpack 你 default_values
dict。 Python 控制台的一个简单示例如下:
>>> d1 = dict(a=1, b=2)
>>> from unittest.mock import call
>>> call(1, 10, **d1)
call(1, 10, a=1, b=2)
>>>
其中 d1
将是您的 default_values
。
这是可能的,因为 Python 3.5 根据 PEP448