I have a problem importing files in Python 3.6. My directories tree is as given below:
project/
app/
├── __init__.py
├── a.py
└── b.py
test/
├── __init__.py
├── test_a.py
└── test_b.py
It works my application (but, no works the tests) using following import statement in b.py
:
from a import *
But, it does not work my application (but, works the tests) using this other in b.py
:
from .a import *
So, I choose from a import *
. Executing test like python3 -m unittest
I always get following error:
E.
======================================================================
ERROR: tests.test_cell (unittest.loader._FailedTest)
----------------------------------------------------------------------
ImportError: Failed to import test module: tests.test_cell
Traceback (most recent call last):
File "/usr/local/Cellar/python3/3.6.1/Frameworks/Python.framework/Versions/3.6/lib/python3.6/unittest/loader.py", line 428, in _find_test_path
module = self._get_module_from_name(name)
File "/usr/local/Cellar/python3/3.6.1/Frameworks/Python.framework/Versions/3.6/lib/python3.6/unittest/loader.py", line 369, in _get_module_from_name
__import__(name)
File "/Users/serrodcal/Repositories/project/tests/test_b.py", line 2, in <module>
from app.b import *
File "/Users/serrodcal/Repositories/project/app/b.py", line 1, in <module>
from a import *
ModuleNotFoundError: No module named 'a'
----------------------------------------------------------------------
Ran 2 tests in 0.001s
FAILED (errors=1)
In this case, my import statement in test_b.py
is as given below:
from unittest import TestCase
from app.cell import *
Is there any way to fix this problem?
The Python standard library includes the unittest module to help you write and run tests for your Python code. Tests written using the unittest module can help you find bugs in your programs, and prevent regressions from occurring as you change your code over time.
If you're using the PyCharm IDE, you can run unittest or pytest by following these steps: In the Project tool window, select the tests directory. On the context menu, choose the run command for unittest . For example, choose Run 'Unittests in my Tests…'.
What is the Python unittest? Unit testing is a technique in which particular module is tested to check by developer himself whether there are any errors. The primary focus of unit testing is test an individual unit of system to analyze, detect, and fix the errors.
In Python, ImportError occurs when the Python program tries to import module which does not exist in the private table. This exception can be avoided using exception handling using try and except blocks.
I was confused with imports in Python and how python works with modules.
project/
module/
__init__.py
a.py
b.py
test/
test_a.py
test_b.py
main.py
This is my new directories tree. The contains of the files are:
In main.py
:
from module.b import Something
In b.py
:
from .a import Something
In a.py
:
from unittest import TestCase
from module.a import Something
In test_b.py
:
from unittest import TestCase
from module.a import Something
from module.b import Something
Like this, it works fine, application and tests.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With