Unittest vs pytest
·
В python есть несколько библиотек для написания тестов. Двумя наиболее популярными являются pytest и unittest 1. При этом pytest в популярности сильно превосходит стандартную библиотеку, но имеет ряд минусов.
Минусы pytest:
- Подход фикстур с неявной передачей через аргументы функции. Это вызывает проблему с поиском фикстуры: IDE/LSP - не подхватывает аргументы как импорты, а сами фикстуры могут быть размазаны по десяткам файлам.
- Использование декораторов для добавление нового поведения. Это происходит из-за того, что предполагается использование функций в качестве тестов.
- Неявное переопределение assert’ов, что не всегда соответствует ожидаемому поведению. Чтобы уточнить поведения всё равно требуется использовать дополнительные функции вида
pytest.approx
. 2
Плюсы pytest:
- Более подробные ответы в случае ошибок на тестах.
- Возможность распараллеливания тестов.
Когда стоит использовать pytest?
- При разработки с помощью асинхронных фреймворков. В pytest есть готовый набор фикстур для работы с event loop и короутинами по аналогии с синхронными функциями.
TL;DR: В большинстве случаев unittest будет достаточным для решения повседневных задач.