【问题标题】:Defining part of a mock call as default values将模拟调用的一部分定义为默认值
【发布时间】:2019-08-20 15:28:41
【问题描述】:

我正在编写一个单元测试以确保使用正确的参数调用模拟方法。

我的部分单元测试如下所示:

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)

也就是说,只有这些调用对象的键和值发生了变化。

我怎样才能得到某种形式的东西:

default_values = {...}

expected_calls = [
    call(
        "X",
        "1",
        default_values,
        ),
    call(
        "Y",
        "2",
        default_values,
    ),
]

【问题讨论】:

    标签: python django python-3.x mocking response


    【解决方案1】:

    你快到了,也许你不知道你可以星解包default_valuesdict。 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

    根据PEP448,从 Python 3.5 开始,这是可能的

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-03
      • 1970-01-01
      • 2016-01-11
      • 1970-01-01
      • 1970-01-01
      • 2018-10-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多