В предыдущей статьеВведение, среда и установка Pytest Basic GuideМы уже кратко представилиPytestконцепция、Экологическая установка и особенности,в этой статье,Мы покажем, как использовать Pytest для совместимости с тестовым кодом, написанным на основе unittest.
Прежде чем представить совместимость Pytest с тестовым кодом, написанным на основе фреймворка unittest, нам необходимо сначала прояснить разницу между unittest и Pytest.
Unittest — это стандартная среда модульного тестирования, предоставляемая Python, тогда как Pytest — это лучшая и простая в использовании среда тестирования, разработанная на основе unittest, а Pytest совместим практически со всеми функциями unittest.
С точки зрения функциональности, unittest предоставляет только базовые возможности среды тестирования и относительно слаб с точки зрения простоты использования, масштабируемости, отчетов о тестировании и т. д.
Pytest, с другой стороны, основан на простоте использования с помощью плагинов и перехватчиков. Он предоставляет плагины для различных сценариев и дополнительные возможности разработки для самой платформы, что очень подходит для приложений корпоративного уровня.
Горький Лист сказал: Короче говоря, новичкам необходимо понять принципы и механизмы базовой среды тестирования технологической экосистемы Python, изучая unittest. Однако в корпоративной практике Pytest следует использовать для организации крупномасштабных тестовых случаев. повысить эффективность и качество.
Давайте посмотрим на некоторые простые различия между ними посредством сравнения таблицы:
среда модульного тестирования | Платформа тестирования Pytest | |
---|---|---|
тестовый файл | Вы можете назвать это как хотите | Имя должно начинаться с test_ или заканчиваться на _test. |
Тестовый класс | Необходимо наследовать unittest.TestCase | Имя класса должно начинаться с Test. |
тестовая функция | Должно начинаться с test_ | По умолчанию он начинается с теста и может быть настроен. |
утверждение | Функции, предоставляющие возможность одного утверждения, например, AssertEqual, например, AssertEqual(1, 2). | Просто используйте утверждение напрямую, например, утверждение 1==2 |
параметризация | По сути, unittest изначально не предоставляет возможности параметризации. | pytest изначально предоставляет возможность параметризации,то есть декоратор pytest.mark.parameterize |
Отчет | Native не обеспечивает возможность создания HTML-отчетов. | Предоставляет плагин pytest-html для генерации HTMLОтчет. |
Конечно, третьи стороны предоставили некоторые возможности для поддержки и расширения возможностей unittest, но с точки зрения приложений корпоративного уровня их далеко недостаточно.
Bitter Leaf всегда настоятельно рекомендовал всем глубоко изучить и понять исходный код, принципы и механизмы unittest на начальном этапе обучения, а затем изучить и применить pytest в работе. Это не противоречие.
Потому что unittest, как стандартная библиотека Python, берет на себя ответственность позволить каждому изучить и освоить принципы. Освоение стандартной среды тестирования unittest также является этапом, который необходимо пройти при изучении Python.