пример иерархии каталогов для организации тестов и их запуска с помощью Pytest

Предположим, у вас есть проект Python с такой структурой:

project/

├── src/
│   ├── my_module.py
│   └── other_module.py

└── tests/
    ├── test_my_module.py
    ├── test_other_module.py
    └── integration/
        ├── test_integration_1.py
        └── test_integration_2.py
  • src/: Этот каталог содержит ваш исходный код, включая модули, которые вы хотите протестировать.

  • tests/: Этот каталог содержит ваши тесты.

    • test_my_module.py: Файл с тестами для модуля my_module.py.

    • test_other_module.py: Файл с тестами для модуля other_module.py.

    • integration/: Этот подкаталог содержит интеграционные тесты, которые могут требовать доступа к внешним ресурсам или базе данных.

      • test_integration_1.py: Файл с интеграционными тестами.

      • test_integration_2.py: Еще один файл с интеграционными тестами.

Теперь давайте рассмотрим различные способы запуска тестов для этой структуры каталогов:

  1. Запуск всех тестов:

    pytest tests/

    Эта команда запустит все тесты в каталоге tests/, включая файлы test_my_module.py, test_other_module.py, и все тесты из подкаталога integration/.

  2. Запуск всех тестов в конкретном файле:

    pytest tests/test_my_module.py

    Эта команда запустит только тесты из файла test_my_module.py.

  3. Запуск всех тестов с маркером:

    pytest -m integration

    Эта команда запустит только тесты, помеченные маркером integration, то есть все тесты из подкаталога integration/.

  4. Запуск тестов с покрытием кода:

    pytest --cov=src/ tests/

    Эта команда запустит все тесты и вычислит покрытие кода тестами для модулей в каталоге src/.

Last updated