怎么在@pytest.mark.hookwrapper UI自动化中获得page对象
时间: 2024-10-16 10:21:08 浏览: 25
Python基础教程之pytest参数化详解.pdf
在pytest框架中,如果你正在编写UI自动化测试,并且想在hookwrapper装饰器下获取page对象,你需要确保你已经在测试类或函数上使用了对应的fixture,通常这是用来初始化页面对象的。例如,使用`pytest-mock-asyncio`库配合`webdriver_manager`进行Webdriver管理的话,可能会有类似这样的结构:
```python
import pytest
from playwright.async_api import Page
from webdriver_manager.chrome import ChromeDriverManager
from fixture.application import Application
@pytest.fixture(scope="session")
def app(request):
driver = ChromeDriverManager().install()
page = Page.driver = driver # 这里假设Page类有一个driver属性用于存储页面实例
yield Application(page) # 返回Application对象,这个对象通常包含页面访问的上下文
driver.quit() # 测试结束后关闭驱动
class TestMyApp:
@pytest.mark.hookwrapper
def pytest_runtest_makereport(self, outcome):
outcome._node_report["page"] = self.page # 将页面对象关联到报告节点
yield
def test_example(self, app):
# 在这里可以直接通过app.page访问页面对象
self.page.goto("http://example.com") # 省略具体的API调用
# 执行测试代码...
```
在这个例子中,你在`pytest_runtest_makereport` hook wrapper中将`page`属性添加到了测试报告中。然后在测试方法`test_example`中,你可以直接从`app`对象获取`page`。
阅读全文