Я получаю сообщение об ошибке при попытке выполнить UT pytest для проекта.
E TypeError: 'module' object is not callable
У меня следующая структура репозитория:
├───src
│ └───company
│ ├───acc
│ └───dp
│ └───logic
│ ├───business
│ │ ├───__init__.py
│ │ ├───filter_customer.py
│ │ └───review_customers.py
│ └───general
│ └───__init__.py (and some functions)
├───tests
│ └───company
│ └───dp
│ └───logic
│ └───business
├───conftest.py
└───pyproject.toml
Каждый файл в бизнес-пакете содержит одну функцию с тем же именем, что и файл.
Представим себе файл filter_customer.py вот так. :
def filter_customer(i: int)
return something
Представим себе файл review_customers.py вот так (в строке с c =... при запуске UT для этой функции возникает ошибка):
from src.company.dp.logic.business import filter_customer
def review_customers()
c = filter_customer(10)
return something
UT выглядит примерно так:
from src.company.dp.logic.business import review_customers
def test_review_customers()
#something before
t = review_customers()
#assert
__init__.py файл для бизнес-пакета выглядит так:
from src.company.dp.logic.business.filter_customer import filter_customer
from src.company.dp.logic.business.review_customers import review_customers
pyproject.toml
[build-system]
requires = ["setuptools"]
build-backend = "setuptools.build_meta"
[tool.setuptools.packages.find]
where = ["src"]
[tool.pytest.ini_options]
addopts = [
]
testpaths = ["tests/company/dp/logic/business"]
python_files = "test_*.py"
python_functions = "test_*"
pythonpath = "src"
norecursedirs = "*"
Как правильно организовать пакеты/модули в таком сценарии?
Цель заключалась в том, чтобы иметь по одной функции для каждого файла и пакетов типа Business и General. прикрыть импорт из модулей.
Я пробовал несколько версий.
Когда я использую прямой импорт из модуля/файла, он работает. Это также работает, когда я вызываю функцию из другого пакета, например общего.
# This works:
from src.company.dp.logic.business.filter_customer import filter_customer
# With this I have error, even though IDE resolve it correctly:
from src.company.dp.logic.business import filter_customer
# This works:
from src.company.dp.logic.general import some_function
def review_customers()
c = filter_customer(10)
return something
Подробнее здесь: https://stackoverflow.com/questions/791 ... ule-object
Постоянная ошибка при ссылке на функцию в пакете (TypeError: объект «модуль» не может быть вызван) ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Постоянная ошибка выражения, когда постоянная функция вызывается из другой
Anonymous » » в форуме C++ - 0 Ответы
- 5 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Постоянная ошибка выражения, когда постоянная функция вызывается из другой
Anonymous » » в форуме C++ - 0 Ответы
- 2 Просмотры
-
Последнее сообщение Anonymous
-