@pytest.mark.hookwrapper 放在conftest中可以拿到测试用例里面的driver吗?
时间: 2024-10-16 11:20:34 浏览: 29
Python基础教程之pytest参数化详解.pdf
`@pytest.mark.hookwrapper` 是 pytest 提供的一种装饰器,用于包装测试集、节点或插件钩子,以便在执行前或执行后添加额外的行为。然而,在 `conftest.py` 文件中,你通常无法直接从 `hookwrapper` 中访问测试用例中的私有变量,如 driver(假设这是一个 Selenium 或其他测试框架中的 Web 浏览器驱动)。
在 Pytest 的上下文中,hookwrapper 主要是用来执行一些对测试执行有全局影响的操作,而不是直接操作测试用例的局部状态。如果你想在 hookwrapper 中使用测试用例相关的资源,比如 driver,你可能需要:
1. 将 driver 的实例作为 fixtures(固定依赖项)注册,然后在整个测试集中通过 fixtures 来获取。
2. 在每个具体的测试函数内部,手动传递 driver 对象作为参数。
示例:
```python
# conftest.py
import pytest
@pytest.fixture(scope='function')
def webdriver(request):
driver = create_driver() # 创建并初始化 driver
def fin():
driver.quit()
request.addfinalizer(fin)
return driver
# test_example.py
def test_with_driver(webdriver): # webdriver 是 fixtures 的名字
assert webdriver.title.startswith('My Page Title')
```
在这个例子中,`webdriver` fixture 会在每个测试函数开始前创建并返回 driver,结束后关闭它。
阅读全文