Veb
Veb

Reputation: 53

Unable to import flask app folder in unittest folder of an repo

I am facing issues in writing unit test for my flask app. Exact issue is that test files in unit-test directory is not able to import files from app folder. My directory structure:

.
├── Dockerfile
├── README.md
├── app
│   ├── __init__.py
│   ├── api.py
│   └── wsgi.py
├── docker
│   ├── docker-compose.yml
│   └── start.sh
├── requirements.txt
└── unit-test
    ├── __init__.py
    └── test_api.py

Code in unit-test/test_api.py:

import unittest
from app import api

Absolute import throws this error: from app import api ModuleNotFoundError: No module named 'app'

I have tried the following after checking a few resources of absolute and relative imports, none of them worked.

from .. import app

error: from .. import app ImportError: attempted relative import with no known parent package I checked a few questions on SO and someone recommended having _init_.py file in the unit-test folder as well but I already have a blank init.py file there. I have reviewed numerous blogs and youtube tutorials and absolute imports work for them easily. Please advise how to fix this error and run unit tests.

Upvotes: 0

Views: 448

Answers (1)

Prats
Prats

Reputation: 634

import sys
sys.path.append('/path/to/the/required/folder')
import name_of_file

if not an inbuilt package, Python only searches in the current directory when you try to import, thus we have to add this path, so that it looks inside this particular folder as well. After adding that, you can simply do the import.

Upvotes: 2

Related Questions