pytest中yield driver的使用
时间: 2024-10-20 11:11:33 浏览: 37
在pytest中,`yield`关键字通常与`parametrize`函数一起用于生成器模式,特别是在处理数据驱动测试(Data-driven testing)的时候。`driver`这个词在这上下文中可能是某个特定的测试工具或者模拟对象,比如Web驾驶器(webdriver)或其他API客户端。
当你在一个测试函数内部使用`yield`,你可以创建一个迭代器,它会在每次迭代时返回一组预设的参数或输入数据,然后对每个数据执行一系列操作。这样可以避免在函数体里硬编码所有测试用例,使得测试更易于管理和维护。
例如:
```python
import pytest
from selenium import webdriver
@pytest.mark.parametrize("url", ["http://example.com", "https://github.com"])
def test_webpage(driver, url):
driver.get(url)
assert driver.title.startswith("Example" if url == "http://example.com" else "GitHub")
# 使用 yield driver 的简写形式
@pytest.fixture(params=["Chrome", "Firefox"])
def browser(request):
driver = request.param.lower() + "driver()" # 假设我们有对应的工厂函数
yield driver
driver.quit()
def test_with_browser(browser): # 使用 @pytest.mark.usefixtures('browser') 来自动获取 fixture
# 在这里,浏览器会在每次循环中切换成不同的 web 驱动
# 测试代码会根据 'browser' 变量的不同值执行对应的行为
pass
```
在这个例子中,`browser`是一个生成器fixture,通过`yield`返回不同的web驱动实例。`test_with_browser`会针对每种提供的浏览器执行一次。
阅读全文