HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-02-26
1 <p>Возьмем для примера функцию. Она принимает на вход HTML в виде строки, извлекает из него все ссылки и возвращает как массив:</p>
1 <p>Возьмем для примера функцию. Она принимает на вход HTML в виде строки, извлекает из него все ссылки и возвращает как массив:</p>
2 <p>Кусок HTML в начале теста выглядит страшно - он большой и состоит из нагромождения тегов. Конечно, можно постараться и отформатировать его, но это будет ручная работа. Для любого редактора это просто строка в Python, но дело не только в форматировании.</p>
2 <p>Кусок HTML в начале теста выглядит страшно - он большой и состоит из нагромождения тегов. Конечно, можно постараться и отформатировать его, но это будет ручная работа. Для любого редактора это просто строка в Python, но дело не только в форматировании.</p>
3 <p>У такого способа работы с большими кусками данных есть и другие недостатки:</p>
3 <p>У такого способа работы с большими кусками данных есть и другие недостатки:</p>
4 <ul><li>При обновлениях очень легко допустить ошибку, которую сложно обнаружить визуально, причем редактор ничем не сможет помочь</li>
4 <ul><li>При обновлениях очень легко допустить ошибку, которую сложно обнаружить визуально, причем редактор ничем не сможет помочь</li>
5 <li>Чем больше таких данных в тестах, тем сложнее их читать и отделять логику от самих данных</li>
5 <li>Чем больше таких данных в тестах, тем сложнее их читать и отделять логику от самих данных</li>
6 </ul><p>Было бы гораздо удобнее, если бы HTML хранился как обычный HTML в своем собственном файле. Это несложно сделать. В таком случае тест будет выглядеть так:</p>
6 </ul><p>Было бы гораздо удобнее, если бы HTML хранился как обычный HTML в своем собственном файле. Это несложно сделать. В таком случае тест будет выглядеть так:</p>
7 <p>Данные, которые нужны во время запуска тестов, в тестировании называют<strong>фикстурами</strong>. Но так как этот термин "занят" инструментом pytest fixtures, то давайте договоримся, что мы будем использовать термин<strong>тестовые данные</strong>- test data. Тестовыми данными могут быть картинки, JSON- и XML-файлы, записи в базе данных и многое другое. Иногда данными может быть и код.<a>Подобные данные</a>нужны при тестировании различных анализаторов кода.</p>
7 <p>Данные, которые нужны во время запуска тестов, в тестировании называют<strong>фикстурами</strong>. Но так как этот термин "занят" инструментом pytest fixtures, то давайте договоримся, что мы будем использовать термин<strong>тестовые данные</strong>- test data. Тестовыми данными могут быть картинки, JSON- и XML-файлы, записи в базе данных и многое другое. Иногда данными может быть и код.<a>Подобные данные</a>нужны при тестировании различных анализаторов кода.</p>
8 <p>Обычно тестовые данные хранятся в отдельных файлах в своей директории. Затем они читаются и по необходимости используются в тестах:</p>
8 <p>Обычно тестовые данные хранятся в отдельных файлах в своей директории. Затем они читаются и по необходимости используются в тестах:</p>
9 <p>Переменная __file__ это встроенная переменная Python, которая содержит путь до исполняемого интерпретатором модуля. Другими словами, когда pytest запускает модуль с тестами, то в переменной будет храниться путь до этого модуля.</p>
9 <p>Переменная __file__ это встроенная переменная Python, которая содержит путь до исполняемого интерпретатором модуля. Другими словами, когда pytest запускает модуль с тестами, то в переменной будет храниться путь до этого модуля.</p>
10 <p>Функция open() используется для открытия файлов и возвращает объект-итератор, из которого будет читаться файл. А метод read() читает весь итератор до конца и возвращает все содержимое файла.</p>
10 <p>Функция open() используется для открытия файлов и возвращает объект-итератор, из которого будет читаться файл. А метод read() читает весь итератор до конца и возвращает все содержимое файла.</p>
11 <p>Когда файлов больше одного, то в коде начинает появляться много похожих вызовов, считывающих файлы. В таком случае лучше вынести построение пути в отдельную функцию, а заодно воспользоваться правильным способом склеивания путей:</p>
11 <p>Когда файлов больше одного, то в коде начинает появляться много похожих вызовов, считывающих файлы. В таком случае лучше вынести построение пути в отдельную функцию, а заодно воспользоваться правильным способом склеивания путей:</p>
12  
12