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
关键字参数一起工作的。