Русский
Открыть в Telegram

Пост ✈️Сегодня поговорим о вечном противостоянии в мире тестирования. Знаете, как в споре "табы или пробелы", у нас есть друг…

20 декабря 2024
P
Pythoner
Фотография
✈️Сегодня поговорим о вечном противостоянии в мире тестирования. Знаете, как в споре "табы или пробелы", у нас есть другая горячая тема: unit-тесты против property-based тестирования. Давайте разберёмся без занудства, но с конкретикой! ➡️Unit-тестирование - это как стрельба по мишеням. Мы точно знаем, какой результат хотим получить, и проверяем конкретные случаи. Например: def test_sum(): assert sum([1, 2, 3]) == 6 assert sum([-1, 1]) == 0 ✅Плюсы unit-тестов: —Понятны даже джуниору —Легко дебажить —Отлично подходят для документирования кода —Быстро выполняются ❌Минусы: —Покрывают только те кейсы, о которых мы подумали —Часто пропускаем edge-cases —Может быть много копипасты ➡️А вот property-based тестирование - это как игра в рулетку, только с гарантированным выигрышем! Вместо конкретных значений мы определяем свойства, которым должна соответствовать наша функция. Библиотека (например, hypothesis) сама генерирует тестовые данные: from hypothesis import given import hypothesis.strategies as st @given(st.lists(st.integers())) def test_sum_properties(numbers): assert sum(numbers) == sum(reversed(numbers)) assert sum(numbers + [0]) == sum(numbers) ✅Преимущества property-testing: —Находит неочевидные баги —Меньше кода, больше покрытие —Заставляет думать о свойствах функций, а не о конкретных значениях ❌Недостатки: —Сложнее придумывать правильные свойства —Медленнее выполняются —Может быть сложно понять, почему тест упал 💡Не выбирайте что-то одно! Используйте unit-тесты для очевидных кейсов и документирования, а property-based - для поиска краевых случаев и сложной логики. Особенно это актуально для математических функций, парсеров и сериализаторов. 📍В идеальном мире ваши тесты должны быть как хороший детектив - проверять очевидное и раскрывать неожиданное. И помните: лучший тест - тот, который ловит баги до прода! 🐍 Pythoner
20 · 1.9K ·

Рядом в ленте

PPythoner✈️ В Python pypy3 — это альтернативная реализация интерпретатора Python, использующая JIT-компиляцию (Just-In-Time). Это означает, что pypy3 динамически компили
это сообщение
PPythoner✈️ Conda — это кроссплатформенный менеджер пакетов и система управления окружением, которая упрощает установку, обновление и управление пакетами, особенно для нPPythoner✈️ В Python pathlib — это модуль, предоставляющий объектно-ориентированный способ работы с файловыми путями и директориями. Он предлагает более удобный и читаем

Открытая публичная лента из поискового индекса ChatCrawler — «Google по публичному Telegram»; обновляется по мере обхода площадки. Время — UTC.

Только публичный контент, официальный API Telegram. О проекте · Вопросы · Границы индекса · Убрать страницу из выдачи · Каталог · Поиск · Как мы считаем