Pytest - Как сообщить о тесте с ошибкой статуса вместо ошибки статуса - PullRequest
3 голосов
/ 31 января 2020

Я видел несколько вопросов на эту тему, но нет ответа, точно совпадающего с тем, что я хочу сделать.

Что я хочу сделать с 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 тест не пройден , что я и хочу.

Мне все еще интересны ваши отзывы, если они у вас есть.

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