Python pytest如何添加到元数据
当我运行我的Python pytest如何添加到元数据,python,pytest,Python,Pytest,当我运行我的pytests时,我喜欢将browser、browserVersion和driverversion等变量添加到元数据中,以便pytest html插件能够获取它们: metadata: {'Python': '3.7.4', 'Platform': 'Windows-10-10.0.18362-SP0',\ 'Packages': {'pytest': '5.0.1', 'py': '1.8.0', 'pluggy': '0.12.0'}, \ 'Plugins': {'base-u
pytests
时,我喜欢将browser
、browserVersion
和driverversion
等变量添加到元数据中,以便pytest html
插件能够获取它们:
metadata: {'Python': '3.7.4', 'Platform': 'Windows-10-10.0.18362-SP0',\
'Packages': {'pytest': '5.0.1', 'py': '1.8.0', 'pluggy': '0.12.0'}, \
'Plugins': {'base-url': '1.4.1', 'clarity': '0.2.0a1', 'html': '1.22.0', \
'metadata': '1.8.0', 'mock': '1.10.4', 'variables': '1.7.1'}, \
'JAVA_HOME': 'C:\\Program Files\\AdoptOpenJDK\\jdk-8.0.212.03-hotspot\\', 'Base URL': ''}
如何向元数据添加类似selenium的webdriver功能:
webdriver:chrome, capabilities:{'acceptInsecureCerts': False,\
'browserName': 'chrome', 'browserVersion': '76.0.3809.100', \
'chrome': {'chromedriverVersion': '76.0.3809.126 (d80a294506b4c9d18015e755cee48f953ddc3f2f-refs/branch-heads/3809@{#1024})}'
我有一个pytest。fixture
用于webdriver
和webdriver
是一个环境变量
控制浏览器,但它们不会显示在元数据中
我可以在conftest.py
中用这个钩子添加静态变量和env-vars
,但是驱动程序没有初始化,它是在自己的夹具中设置的,如何确保这个夹具在我的wd
夹具(设置全局驱动程序)之后运行。不允许在conftest.py
中向函数添加装置:
@pytest.mark.optionalhook
def pytest_metadata(metadata):
global driver
if driver:
metadata['browserName'] = driver.capabilities['browserName']
metadata['browserVersion'] = driver.capabilities['browserName']
if driver.capabilities.get('chrome'):
metadata['chromedriverVersion'] = driver.capabilities['chrome']['chromedriverVersion']
else:
metadata['drivererror'] = "driver not initialized"
例如,您可以通过
config.\u metadata
属性访问fixture和tests中的元数据dict
@pytest.fixture(scope='session')
def driver():
return webdriver.Chrome()
@pytest.fixture(autouse=True, scope='session')
def store_driver_info(request, driver):
request.config._metadata['browserName'] = driver.capabilities['browserName']
def test_browser_name(request, driver):
assert request.config._metadata['browserName'] == driver.capabilities['browserName']
解决方法是将webdriver的安装移到
pytest\u metadata()
中,然后放下我的整个webdriver安装夹具。不是很优雅。autouse=True
使用请求自动夹具(而不是config)并将其全部添加到驱动程序中(我称之为wd`)是解决方案。谢谢