Вот простой тестовый файл:
# test_single.py
def test_addition():
"Two plus two is still four"
assert 2 + 2 == 4
def test_addition2():
"One plus one is still two"
assert 1 + 1 == 2
Выход по умолчанию в py.test похож на
$ py.test test_single.py -v
[...]
test_single.py::test_addition PASSED
test_single.py::test_addition2 PASSED
Я хотел бы иметь
Two plus two is still four PASSED
One plus one is still two PASSED
то есть. используйте docstrings в качестве описаний тестов.
Я попытался использовать настройку в файле conftest.py
:
import pytest
@pytest.mark.tryfirst
def pytest_runtest_makereport(item, call, __multicall__):
# execute all other hooks to obtain the report object
rep = __multicall__.execute()
if rep.when == "call":
extra = item._obj.__doc__.strip()
rep.nodeid = extra
return rep
который близок, но он повторяет имя файла в каждой строке:
$ py.test test_single.py
======================================================================================== test session starts =========================================================================================
platform darwin -- Python 2.7.7 -- py-1.4.26 -- pytest-2.6.4
plugins: greendots, osxnotify, pycharm
collected 2 items
test_single.py
And two plus two is still four .
test_single.py
And one plus one is still two .
====================================================================================== 2 passed in 0.11 seconds ======================================================================================
Как я могу избежать строк с test_single.py
на выходе или, возможно, распечатать его только один раз?
Поиск источника py.test и некоторых его плагинов не помог.
Я знаю плагин pytest-spec, но использует имя функции в качестве описания. Я не хочу писать def test_two_plus_two_is_four()
.