Я хочу выполнить тест API. Я отправляю изображение и получаю json, содержащий прогнозы. Я создал скрипт app/api.py, который содержит метод отправки изображения и получения ответа.
Не могу запустить тест, выдает ошибку
Я стою у истоков своего проекта
λ python -m unittest test/test_api.py
ModuleNotFoundError: No module named 'test/test_api'
Дерево проекта:
-приложение
-- апи.py
-тест
-- test_api.py
import unittest
from unittest.mock import Mock, patch
import os, sys
# Add the 'app' directory to the Python path
current_dir = os.path.dirname(os.path.abspath(__file__))
app_dir = os.path.join(current_dir, 'app')
sys.path.append(app_dir)
from api import API
class TestAPI(unittest.TestCase):
def test_api_call(self):
// create a mock
...
api = API()
with patch('requests.post', return_value=mock_response):
response = api.getPredFromImg(image_path)
// Assert
...
if __name__ == "__main__":
unittest.main()
@Clasherkasten, спасибо за помощь.
Можете ли вы поместить пустой файл __init__.py в тестовую папку?






Ваша проблема может быть связана с тем фактом, что каталоги, которые вы называете модулями, на самом деле, так сказать, в глазах Python не что иное, как простые каталоги. Чтобы интерпретатор воспринимал их как модули, вам нужно включить файл __init__.py в каждый каталог, в котором находится код Python.
Хотя, начиная с Python версии 3.3 и далее, потребность в явном определении модулей как таковых исчезла, хотя в некоторых случаях придерживаться старого способа ведения дел может оказаться правильным и уменьшить появление определенных ошибок; вот аргумент, почему вам, возможно, все же придется включить файл __init__.py:
Не требуется ли __init__.py для пакетов в Python 3.3+
Если это не решит проблему, то есть если ошибка все еще сохраняется, проблема может быть связана с вашим новым дополнением к пути Python, то есть к каталогу приложения.
Отвечает ли это на ваш вопрос? Модуль модульного тестирования Python выдает «ModuleNotFoundError: нет модуля с именем 'tests.test_file'»