Я хочу протестировать модуль Python, используя Pytest , который использует данные из внешнего подмодуля GIT. Я хочу включить (в конечном итоге Opt-In) опция для автоматического тестирования моего кода на множество различных версий этого подмодуля или, другими словами, запуская All из моих тестов по каждому тегу GIT> = 1.0.0 . По сути, я хотел бы вызвать pytest один раз, чтобы развернуть следующие команды:
Код: Выделить всё
git checkout 1.0.0
pytest
git checkout 1.0.1
pytest
git checkout 1.0.2
pytest
...
Где количество тестов, выполняемых в этом сеансе, представляет собой количество тестов * Количество подмодульных версий . Посмотрев на документацию для функций Pytest Hook, я обнаружил, что pytest_sessionStart () и могу динамически выбрать тег версии GIT, прежде чем запустить набор:
Код: Выделить всё
@pytest.hookimpl()
def pytest_sessionstart(session):
# Grab and populate the repo
repo = git.Repo(path_to_repo)
repo.git.fetch()
tag_list = sorted([version_string_to_tuple(tag.name) for tag in repo.tags])
# Only select versions >= 1.0.0
tag_list = tag_list[tag_list.index((1, 0, 0)):]
# Checkout (singular) version
repo.git.checkout(version_tuple_to_string(tag_list[-1])) # latest, because why not
# Test collection/execution begins after this function ends
Но это позволит мне заказать только одну версию на pytest vocation.
Подробнее здесь:
https://stackoverflow.com/questions/797 ... st-session