Я видел несколько вопросов на эту тему, но нет ответа, точно совпадающего с тем, что я хочу сделать.
Что я хочу сделать с Pytest: не сообщать о тестах, где произошла ошибка (любой вид ошибка, например ZeroDivision) как сбой, но как ошибка. Причина проста: я хочу знать, какие тесты выделяют возможную ошибку, а какие не выполнялись должным образом по любой другой причине, кроме ошибки (плохая конфигурация, проблема с сетью, ...).
В этот ответ , тестовое вызывающее устройство сообщается как ошибка, и это хорошо. Но я не знаю, какие тесты приведут к ошибке, как это сделать? Если я вызову прибор, об этом тесте будет автоматически сообщено с ошибкой.
Я также попытался использовать функцию-оболочку, как объяснено здесь , но я не могу заставить ее работать в Pytest.
Подводя итог, я хочу сделать следующее:
class TestErrorVsFailure:
def test_fail(self):
print("Test expected to report a failure")
assert 2 == 1
def test_error(self):
print("Test expected to report an error")
a = 5/0
Результат выполнения Pytest: оба теста отмечены как неудачные
================================== FAILURES ===================================
________________________ TestErrorVsFailure.test_fail _________________________
self = <test_programs_services.TestErrorVsFailure object at 0x00000125F0633640>
@pytest.mark.poc
def test_fail(self):
print("Test expected to report a failure")
> assert 2 == 1
E assert 2 == 1
tests\scenario\web\test_programs_services.py:43: AssertionError
________________________ TestErrorVsFailure.test_error ________________________
self = <test_programs_services.TestErrorVsFailure object at 0x00000125F066A490>
@pytest.mark.poc
def test_error(self):
print("Test expected to report an error")
> a = 5 / 0
E ZeroDivisionError: division by zero
tests\scenario\web\test_programs_services.py:48: ZeroDivisionError
================= 2 failed in 1.48s =================
Я также могу попробовать перехватывать как можно больше всех исключений, но повышение пользовательского исключения также приводит к неудачному тесту, так что кажется, что это неправильное решение ...
Заранее спасибо, если у вас есть решение!
ОБНОВЛЕНИЕ:
Отчет Pytest- html также показывает 2 теста не пройден, как вывод Pytest.
Однако, отчет allure-pytest html показывает 1 тест не пройден и 1 тест не пройден , что я и хочу.
Мне все еще интересны ваши отзывы, если они у вас есть.