py.testを使用しています。マーカー情報が含まれているテストのリストを取得したいと思います。 --collect-onlyフラグを使用すると、テスト機能が使用できます。各テストに割り当てられたマーカーも取得する方法はありますか?私は回避策のコードサンプル作成フランクTの回答に基づいてマーカーを使ってpy.testテスト情報を収集する
:
from _pytest.mark import MarkInfo, MarkDecorator
import json
def pytest_addoption(parser):
parser.addoption(
'--collect-only-with-markers',
action='store_true',
help='Collect the tests with marker information without executing them'
)
def pytest_collection_modifyitems(session, config, items):
if config.getoption('--collect-only-with-markers'):
for item in items:
data = {}
# Collect some general information
if item.cls:
data['class'] = item.cls.__name__
data['name'] = item.name
if item.originalname:
data['originalname'] = item.originalname
data['file'] = item.location[0]
# Get the marker information
for key, value in item.keywords.items():
if isinstance(value, (MarkDecorator, MarkInfo)):
if 'marks' not in data:
data['marks'] = []
data['marks'].append(key)
print(json.dumps(data))
# Remove all items (we don't want to execute the tests)
items.clear()
ありがとう、私はそれらに基づいて回避策を作成しました。 –