HTML Diff
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