Генерация метода динамического pytest только с произвольным именем
Привет, я пробую следующий пример, упомянутый в документации по pytest,
# content of test_expectation.py
@pytest.mark.parametrize("test_input,expected", [
("3+5", 8),
("2+4", 6),
("6*9", 42),
])
def test_eval(test_input, expected):
assert eval(test_input) == expected
Когда я запускаю с помощью py.test -v, это дает мне вывод, как показано ниже,
test_code.py::test_eval[3+5-8] PASSED
test_code.py::test_eval[2+4-6] PASSED
test_code.py::test_eval[6*9-42] FAILED
Здесь, когда я генерирую html-отчеты, имена слишком длинные, когда я использую очень длинные входные данные.
В приведенном выше примере, чтобы не брать 1-й результат, имя метода будет [3+5-8]. то есть он взял кортеж (3+5,8) и прикрепил его к фактическому имени метода тестового примера.
Теперь в моем случае кортеж ("короткое имя", "очень длинная строка") вместо (3+5,8), поэтому в моем html-отчете показывается очень долго. Можно ли показать только "короткое имя", а не 2-е значение?
1 ответ
Не могли бы вы вставить текущее отображаемое длинное имя и ожидаемое короткое имя, чтобы ваш вопрос прояснился. На всякий случай, если это поможет, вы можете использовать поле "ids" в @ pytest.mark.parametrize для настройки отображаемого имени теста с параметризованными значениями.
для е, г
@pytest.mark.parametrize("test_input,expected", [
("3+5", 8),
("2+4", 6),
("6*9", 42),
], ids=['cust_name_1', 'cust_name_2', 'cust_name_3'])
def test_eval(test_input, expected):
...
будет отображать ваше имя теста как
test_code.py::test_eval[cust_name_1] PASSED
test_code.py::test_eval[cust_name_1] PASSED
test_code.py::test_eval[cust_name_1] FAILED