pytest: лучший способ добавить описание теста (длинное имя теста) в отчет без переименования файлов или функций - PullRequest
2 голосов
/ 31 января 2020

По умолчанию pytest использует имена тестовых функций или имена тестовых файлов в отчетах pytest

Есть ли лучший способ добавить описание теста (длинное имя теста) в отчет без переименования файлов или функций с помощью pytest?

Можем ли мы сделать это путем обновления имени тестового случая во время выполнения, например?

  1. request.node.name
request.node.name = "Very Very Very Very Very long long long long name name name name"
Описание после имени теста
def test_ok():
"""Very Very Very Very Very long long long long name name name name"""
    print("ok")

1 Ответ

2 голосов
/ 31 января 2020

Используя pytest_runtest_makereport крючок , сообщаемое имя можно настроить для каждого теста. (Обратите внимание, что зацепки должны быть размещены внутри плагина, или conftest.py)

# conftest.py

import pytest

@pytest.hookimpl(hookwrapper=True)
def pytest_runtest_makereport(item, call):
    outcome = yield
    report = outcome.get_result()

    test_fn = item.obj
    docstring = getattr(test_fn, '__doc__')
    if docstring:
        report.nodeid = docstring


# test_it.py

def test_ok():
    """Very Very Very Very Very long long long long name name name name"""
    print("ok")

Это будет производить вывод, похожий на:

tests/test_stuff.py::test_ok 
Very Very Very Very Very long long long long name name name name <- tests/test_stuff.py PASSED [100%]

См. "hookwrapper: executing вокруг других крючков " для получения дополнительной информации о outcome = yield и outcome.get_result() бизнесе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...