__init__.py

1. Основное назначение __init__.py

  1. Модуль пакета

    • Любая папка, содержащая файл __init__.py, считается пакетом.

    • Без него Python не будет воспринимать папку как пакет (в старых версиях Python до 3.3 это было строго обязательно; сейчас опционально, но всё равно часто используется).

  2. Инициализация пакета

    • В этом файле можно писать код, который должен выполняться при импорте пакета.

    • Можно импортировать подмодули, задавать переменные или константы пакета.


2. Примеры использования

Пример 1: Создание пакета

Структура проекта:

my_package/
    __init__.py
    module1.py
    module2.py

Содержимое __init__.py может быть пустым:

# my_package/__init__.py

Импорт пакета:

import my_package.module1

Пример 2: Инициализация при импорте

Можно импортировать подмодули прямо в __init__.py, чтобы их было удобно использовать:

# my_package/__init__.py
from .module1 import func1
from .module2 import func2

Теперь:

from my_package import func1, func2
func1()

Пример 3: Код и переменные пакета

# my_package/__init__.py
version = "1.0"
print("Пакет my_package загружен")

Импорт:

import my_package
print(my_package.version)  # 1.0
  • При этом при импорте выполнится print("Пакет my_package загружен").


3. Применение в автотестах

  • Структура тестов

tests/
    __init__.py
    test_login.py
    test_registration.py
  • Позволяет:

    • Импортировать тестовые модули как пакет: from tests import test_login.

    • Настроить глобальные фикстуры или константы пакета в __init__.py.

  • Page Object Model

pages/
    __init__.py
    login_page.py
    home_page.py
  • Можно импортировать все страницы сразу:

from pages import login_page, home_page

💡 Вывод:

  • __init__.py делает папку пакетом Python, позволяет инициализировать пакет, импортировать подмодули и задавать переменные.

  • Особенно полезен для структурирования автотестов, Page Object Model и повторного использования кода.

Last updated

Was this helpful?