我知道类似的问题之前已经被问过了...但是我有一个小疑问...
我一直在关注这个链接:https://www.python-course.eu/python3_packages.php
我的代码结构:
my-project
-- __init__.py
-- src
-- __init__.py
-- file1.py
-- test
-- __init__.py
-- test_file1.py
测试文件1.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')
语句之外是否有其他替代方法。
谢谢!
编辑:
在执行从my-project目录: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.
pwd
命令获取当前路径,然后进入项目根目录,再次使用pwd
命令获取目录并使用它。 - Caridorc