Я знаю, что подобные вопросы задавались раньше ... Но у меня было быстрое сомнение ...
Я перешел по этой ссылке: https://www.python -course.eu / python3_packages.php
моя структура кода:
my-project
-- __init__.py
-- src
-- __init__.py
-- file1.py
-- test
-- __init__.py
-- test_file1.py
test_file1.py:
import unittest
from src.file1 import *
class TestWriteDataBRToOS(unittest.TestCase):
def test_getData(self):
sampleData = classInFile1()
sampleData.getData()
self.assertNotEqual(sampleData.usrname, "")
if __name__ == '__main__':
unittest.main()
Здесь я получаю сообщение об ошибке:
ModuleNotFoundError: No module named 'src'
Если я поменяю на:
import sys
sys.path.insert(0, '../src')
import unittest
from file1 import *
тогда это работает!
Может ли кто-нибудь помочь мне понять, почему это не сработает, как это было описано в ссылке, вставленной выше, или каким-либо другим способом вместо написания sys.path.insert(0, '../src')
заявления.
Спасибо!
Edit:
после выполнения из my-project dir: `python -m unittest test / test_file1 / TestWriteDataBRToOS Я получаю сообщение об ошибке, обновленное выше.
Traceback (most recent call last):
File "/usr/lib/python2.7/runpy.py", line 174, in _run_module_as_main
"__main__", fname, loader, pkg_name)
File "/usr/lib/python2.7/runpy.py", line 72, in _run_code
exec code in run_globals
File "/usr/lib/python2.7/unittest/__main__.py", line 12, in <module>
main(module=None)
File "/usr/lib/python2.7/unittest/main.py", line 94, in __init__
self.parseArgs(argv)
File "/usr/lib/python2.7/unittest/main.py", line 149, in parseArgs
self.createTests()
File "/usr/lib/python2.7/unittest/main.py", line 158, in createTests
self.module)
File "/usr/lib/python2.7/unittest/loader.py", line 130, in loadTestsFromNames
suites = [self.loadTestsFromName(name, module) for name in names]
File "/usr/lib/python2.7/unittest/loader.py", line 91, in loadTestsFromName
module = __import__('.'.join(parts_copy))
ImportError: Import by filename is not supported.