Какие тесты запустятся, если запустить команду 'pytest' из корня проекта?

PyTest автоматически обнаруживает тестовые функции и методы по определённым правилам именования и структуре. По умолчанию, он ищет:

Короткий ответ

Что ответить на собеседовании

PyTest автоматически обнаруживает тестовые функции и методы по определённым правилам именования и структуре. По умолчанию, он ищет:

Подробный разбор

Ответ с пояснениями

Условие

Какие тесты запустятся, если запустить команду 'pytest' из корня проекта?

project/ ├── conftest.py ├── tests/ │ ├── check_api.py │ │ └── def test_get_users(): pass # (A) │ ├── test_ui_login.py │ │ ├── def test_button(): pass # (B) │ │ └── def check_label(): pass # (C) │ ├── web_test.py │ │ ├── def test_login_flow(): pass # (D) │ │ └── def logout_test(): pass # (E) │ └── integration/ │ └── test_db.py │ ├── class TestDatabase: │ │ └── def test_connect(): pass # (F) │ └── class DB_Helper: │ └── def test_ping(): pass # (G) ├── scripts/ │ └── test_cleaner.py │ └── def test_wipe_cache(): pass # (H) └── my_test_file.py └── def test_is_valid(): pass # (I)

Ответ

PyTest автоматически обнаруживает тестовые функции и методы по определённым правилам именования и структуре. По умолчанию, он ищет:

  • Функции, имена которых начинаются с test_.
  • Методы внутри классов, имена которых начинаются с test_, при условии, что класс тоже начинается с Test и не наследуется от unittest.TestCase.
  • Файлы с именами, начинающимися с test_ или заканчивающимися на _test.py.

Таким образом, PyTest сканирует директории, находит такие файлы, импортирует их и запускает все функции и методы, соответствующие этим критериям. Это позволяет легко организовывать тесты без необходимости явно регистрировать их.

Пример:

# test_example.py

def test_sum():
    assert sum([1, 2, 3]) == 6

class TestMath:
    def test_multiply(self):
        assert 2 * 3 == 6

При запуске pytest эти два теста будут обнаружены и выполнены.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее