0 added
0 removed
Original
2026-01-01
Modified
2026-02-26
1
<p>В этом уроке мы начнем погружаться в тестирование и обсудим нюансы, которые возникают в тестировании приложений.</p>
1
<p>В этом уроке мы начнем погружаться в тестирование и обсудим нюансы, которые возникают в тестировании приложений.</p>
2
<p>Основные тесты, которые нужно писать - это тесты на успешные сценарии работы. Но в некоторых ситуациях код должен возвращать ошибки, и их тоже бывает нужно проверять. Под ошибками понимаются ситуации, в которых код генерирует исключение.</p>
2
<p>Основные тесты, которые нужно писать - это тесты на успешные сценарии работы. Но в некоторых ситуациях код должен возвращать ошибки, и их тоже бывает нужно проверять. Под ошибками понимаются ситуации, в которых код генерирует исключение.</p>
3
<p>Посмотрим на примере такого теста:</p>
3
<p>Посмотрим на примере такого теста:</p>
4
<p>Этот код пытается протестировать ситуацию, при которой функция function_with_exception() генерирует исключение, если ей передать 0. Как думаете, этот тест проверит, что функция действительно порождает исключение?</p>
4
<p>Этот код пытается протестировать ситуацию, при которой функция function_with_exception() генерирует исключение, если ей передать 0. Как думаете, этот тест проверит, что функция действительно порождает исключение?</p>
5
<p>На самом деле, нет. Если функция function_with_exception() не сгенерирует исключение, то тест пройдет, потому что код не попадет в блок except.</p>
5
<p>На самом деле, нет. Если функция function_with_exception() не сгенерирует исключение, то тест пройдет, потому что код не попадет в блок except.</p>
6
<p>В Pytest встроен контекстный менеджер, который самостоятельно отлавливает исключение и проверяет, что оно вообще было сгенерировано:</p>
6
<p>В Pytest встроен контекстный менеджер, который самостоятельно отлавливает исключение и проверяет, что оно вообще было сгенерировано:</p>
7
<p>Здесь raises перехватывает только те исключения, которые являются подтипами переданного класса. Благодаря этому мы можем управлять ожидаемым поведением и ловить только те ошибки, которые хотим поймать.</p>
7
<p>Здесь raises перехватывает только те исключения, которые являются подтипами переданного класса. Благодаря этому мы можем управлять ожидаемым поведением и ловить только те ошибки, которые хотим поймать.</p>
8
<p>Более того, можно проверить конкретное сообщение, которое пришло вместе с исключением:</p>
8
<p>Более того, можно проверить конкретное сообщение, которое пришло вместе с исключением:</p>
9
9