Python 当unittest.patch只接受一个位置参数时,如何将两个位置参数传递给它?

Python 当unittest.patch只接受一个位置参数时,如何将两个位置参数传递给它?,python,python-unittest,Python,Python Unittest,我正在使用来自另一个集成的测试作为示例,为一个集成编写测试。每个测试函数都会调用一个函数,该函数是如何使用两个位置参数调用patch: async def setup_platform(hass, platform): """Set up the ring platform and prerequisites.""" MockConfigEntry(domain=DOMAIN, data={"username": "foo", "token": {}}).add_to_hass(

我正在使用来自另一个集成的测试作为示例,为一个集成编写测试。每个测试函数都会调用一个函数,该函数是如何使用两个位置参数调用
patch

async def setup_platform(hass, platform):
    """Set up the ring platform and prerequisites."""
    MockConfigEntry(domain=DOMAIN, data={"username": "foo", "token": {}}).add_to_hass(
        hass
    )
    with patch("homeassistant.components.ring.PLATFORMS", [platform]):
        assert await async_setup_component(hass, DOMAIN, {})
    await hass.async_block_till_done()
第一个位置参数
“homeassistant.components.ring.PLATFORMS”
显然是一个字符串,但指向常量
PLATFORMS
,它是一个元组
(“二进制传感器”、“灯光”、“传感器”、“开关”、“相机”)
。第二个位置参数
platform
作为字符串传入
setup\u platform
“binary\u sensor”
“light”
“sensor”
“switch”
“camera”
(与
PLATFORMS
元组的项目相同),但是作为一个带有一个字符串项的字典传递到
patch

我对正在发生的事情的理解是,这只会导致
平台
被修补


我不明白的是,当它只接受时,如何将两个位置参数传递到
patch
。在调用
patch
之前,这两个位置参数是如何组合成一个的?

在Python中,其他参数只是获取默认值,但它们仍然是位置参数。

在Python中,其他参数只是获取默认值,但它们仍然是位置参数。

根据文档,path接受多个参数。patch的第二个position参数是new,第三个是spec,等等。根据文档路径,它接受多个参数。patch的第二个位置参数是新的,第三个是spec,等等。这就解释了,哈哈,谢谢。我一度知道这一点,但有些人确信关键字参数需要一个键。因此,在本例中,一个包含一个字符串项的列表将作为unittest.patch:
unittest.mock.patch中的
new
关键参数传递(target,new=DEFAULT,spec=None,create=False,spec\u set=None,autospec=None,new\u callable=None,**kwargs)
我想现在我只需要弄清楚列表是如何与unittest.patch中的
new
关键字参数一起工作的。我一度知道这一点,但有些人确信关键字参数需要一个键。因此,在本例中,一个包含一个字符串项的列表将作为unittest.patch:
unittest.mock.patch中的
new
关键参数传递(target,new=DEFAULT,spec=None,create=False,spec\u set=None,autospec=None,new\u callable=None,**kwargs)
我想现在我只需要弄清楚列表是如何与unittest.patch中的
new
关键字参数一起工作的。