Параметризованные тесты в Pytest имеют следующий формат идентификатора: <function name>[<param identifier>]
.
Я хотел бы иметь возможность полностью контролировать имя тестового примера, когда они параметризованы.
ДляНапример, в настоящее время у меня есть следующий код:
import pytest
list_args = ["a", "b", "c"]
@pytest.fixture(params=list_args)
def prog_arg(request):
yield request.param
def test_001():
# This should not be changed
pass
def test_002(prog_arg):
# This should be test_002_01, test_002_02, ...
print(prog_arg)
ids = [f"test_003_{i+1:02d}" for i in range(len(list_args))]
@pytest.mark.parametrize("arg", list_args, ids=ids)
def test_003(arg):
# This should be test_003_01, test_003_02, ...
print(prog_arg)
Когда я запускаю ( pytest 5.1.3 ), у меня есть:
test_rename_id.py::test_TC_001 PASSED
test_rename_id.py::test_TC_002[a] PASSED
test_rename_id.py::test_TC_002[b] PASSED
test_rename_id.py::test_TC_002[c] PASSED
test_rename_id.py::test_TC_003[test_003_01] PASSED
test_rename_id.py::test_TC_003[test_003_02] PASSED
test_rename_id.py::test_TC_003[test_003_03] PASSED
Что бы я хотелдолжен иметь:
test_rename_id.py::test_TC_001 PASSED
test_rename_id.py::test_TC_002_01 PASSED
test_rename_id.py::test_TC_002_02 PASSED
test_rename_id.py::test_TC_002_03 PASSED
test_rename_id.py::test_TC_003_01 PASSED
test_rename_id.py::test_TC_003_02 PASSED
test_rename_id.py::test_TC_003_03 PASSED
Возможно ли это без слишком большого взлома запроса object
(или других модификаций, которые могут быть повреждены в будущих обновлениях pytest
?
Спасибо