我很困惑如何構建一個包含一個包和unittest的項目。項目目錄結構,以便我可以導入包unittest
我有這樣的目錄結構:
TestProject/
├── package
│ ├── constants.py
│ ├── __init__.py
│ ├── package.py
│ └── tests
│ └── test_package.py
└── usage.py
constants.py
A = 1
__init__.py
from .package import give_A
package.py
from .constants import *
def give_A():
return A
usage.py
from package import give_A
print(give_A())
test_package.py
import unittest
from package import give_A
class Test_package(unittest.TestCase):
def test_simple(self):
self.assertEqual(give_A(), 1)
if __name__ == '__main__':
unittest.main()
一切正常,直到我嘗試運行test_package.py
模塊,它可以理解不能導入包:
~/Python/TestProject/package/tests $ python3 test_package.py
Traceback (most recent call last):
File "test_package.py", line 3, in <module>
from package import give_A
ImportError: No module named 'package'
但是,這似乎是封裝/測試的首選結構。我怎樣才能使它工作?或者我應該完全不同(結構,目錄,導入,測試執行...)?
嘗試'從package.package import give_A'? – Holloway
'ImportError:沒有名爲package.package'的模塊。沒有理由說它應該工作,因爲包不在PYTHONPATH中,對嗎? – Fenikso
你想從哪裏運行腳本? – Holloway