Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Aysnc将对象转换为协同程序。加载对象字段_Python_Python Asyncio - Fatal编程技术网

Python Aysnc将对象转换为协同程序。加载对象字段

Python Aysnc将对象转换为协同程序。加载对象字段,python,python-asyncio,Python,Python Asyncio,我有以下功能 async def get_page(self, browser): page = await browser.newPage() await page._client.send("Emulation.clearDeviceMetricsOverride") await page.setViewport( {"width": 2560, "height": 1600, "deviceScaleFactor": 4}) return p

我有以下功能

async def get_page(self, browser):
    page = await browser.newPage()
    await page._client.send("Emulation.clearDeviceMetricsOverride")
    await page.setViewport(
        {"width": 2560, "height": 1600, "deviceScaleFactor": 4})
    return page
随着下面的测试

def test_get_page(page_test_args):
    client = VjsClient()
    browser = client.get_browser()
    page = client.get_page(browser)
    assert page._viewport == page_test_args
当我的代码命中时

assert page._viewport == page_test_args
我遇到了这个错误

    def test_get_page(page_test_args):
        client = VjsClient()
        browser = client.get_browser()
        page = client.get_page(browser)
>       assert page._viewport == page_test_args
E       AttributeError: 'coroutine' object has no attribute '_viewport'
如何解决这个问题,以便能够继续访问页面字段并保持异步功能

async def get_page(self, browser):
async def
这里意味着调用
get_page
将返回一个
asyncio
。要实际执行
get\u页面
并获得结果,您应该为该协同程序执行

您的测试应按以下方式进行更改:

page = await client.get_page(browser)
但是请注意,如果您在函数内部等待某些内容,则此函数(
test\u get\u page
)必须是协程本身(必须使用
async def
)并等待在某个地方执行

这意味着除了如图所示的普通
pytest
之外,还应该使用

async def
这里意味着调用
get_page
将返回一个
asyncio
。要实际执行
get\u页面
并获得结果,您应该为该协同程序执行

您的测试应按以下方式进行更改:

page = await client.get_page(browser)
但是请注意,如果您在函数内部等待某些内容,则此函数(
test\u get\u page
)必须是协程本身(必须使用
async def
)并等待在某个地方执行

这意味着除了如图所示的普通
pytest
之外,还应该使用