unittest.TestCase, имеет более строгую структуру тестов и менее гибкую систему расширений. pytest часто предпочтительнее за счет простоты использования и большей гибкости.
На собеседовании, описывая отличия pytest от unittest, можно выделить следующие ключевые моменты:
1. Простота и выразительность синтаксиса:
unittest требует написания тестов в классах, наследуемых от unittest.TestCase, и использования специальных методов assert, таких как assertEqual, assertTrue и т.д.  Это делает код более многословным и требует определенного ритуала.pytest предлагает более лаконичный и гибкий синтаксис.  Тестовые функции определяются как обычные функции, начинающиеся с префикса test_.  Для проверок можно использовать стандартный оператор assert, что делает код более читаемым и интуитивно понятным.2. Автоматическое обнаружение тестов:
pytest автоматически обнаруживает тестовые функции и классы в соответствии с соглашениями об именах (например, имена файлов, начинающиеся с test_ или заканчивающиеся на _test.py, и функции/классы, начинающиеся с test_).  Это упрощает запуск тестов и избавляет от необходимости явно перечислять тестовые модули, как это часто требуется в unittest (через unittest.main() или TestLoader).3. Фикстуры (Fixtures):
pytest предоставляет мощную систему фикстур для управления тестовыми ресурсами и зависимостями. Фикстуры позволяют определить код, который будет автоматически выполняться до, во время или после выполнения тестовых функций.  Это упрощает настройку и очистку тестовой среды, а также позволяет повторно использовать код между различными тестами.unittest также предоставляет механизмы для настройки и очистки (setUp, tearDown, setUpClass, tearDownClass), но система фикстур pytest более гибкая и выразительная.4. Расширяемость и плагины:
pytest имеет богатую экосистему плагинов, которые расширяют его функциональность и позволяют интегрировать его с различными инструментами и библиотеками (например, pytest-cov для покрытия кода, pytest-django для тестирования Django-приложений).unittest также можно расширять, но экосистема плагинов для pytest значительно более развита.5. Параметризация тестов:
pytest предоставляет удобный способ параметризации тестов с помощью декоратора @pytest.mark.parametrize.  Это позволяет выполнять один и тот же тест с разными наборами входных данных, не дублируя код.unittest параметризация тестов обычно требует более сложного кода или использования сторонних библиотек.6. Обработка исключений:
pytest предоставляет более информативные сообщения об ошибках, особенно при использовании оператора assert.  Он также может показывать контекст, в котором произошла ошибка, что упрощает отладку.unittest может быть менее информативным в плане сообщений об ошибках.7. Поддержка асинхронного тестирования:
pytest с помощью плагина pytest-asyncio предоставляет хорошую поддержку для асинхронного тестирования (тестирование кода, использующего async и await).В целом, pytest предлагает более современный, гибкий и удобный подход к тестированию, чем unittest. Он упрощает написание, запуск и отладку тестов, а также предоставляет мощные инструменты для управления тестовыми ресурсами и зависимостями.