Запускайте метод, только если был использован --collect-only - PullRequest
2 голосов
/ 10 февраля 2020

Я пытаюсь собрать некоторые статистические данные о количестве тестовых случаев для каждой функции или группы, и хочу сделать это только во время сбора, а не когда все в моей компании проводят свои тесты. Я ищу способ запуска функции, только если в команде py.test было использовано --collect-only.

Цель :

  • Выполнить несколько код только если --collect-only был использован
  • Мне нужен доступ к тестовой items структуре данных (т.е. мне нужны все использованные маркеры)

В настоящее время я сделать это через pytest_collection_modifyitems hook:

def pytest_collection_modifyitems(config, items):
    # This hook runs after collection
    for item in items:
        teams = [mark.name for mark in item.iter_markers() if mark.name.startswith('team_')]
        features = [mark.name for mark in item.iter_markers() if mark.name.startswith('feature_')]

        # do something with these markers

Есть ли способ запустить этот код выше, если и только если py.test был запущен с --collect-only? Если у кого-то есть предложения по лучшим способам сделать это, пожалуйста, помогите!

Спасибо!

1 Ответ

2 голосов
/ 10 февраля 2020

Просто проверьте, установлен ли флаг в объекте config. Пример с вашим крючком:

def pytest_collection_modifyitems(config, items):
    if config.option.collectonly:
        print("I will run only with --collectonly flag")
    else:
        print("I will run only without --collectonly flag")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...