我的源文件位於src下,我的測試文件位於測試下。當我想運行一個測試文件時,比如說python myTest.py,我得到一個導入錯誤:「沒有名爲ASourceModule.py的模塊」。運行測試時Python導入src模塊
如何導入運行測試所需的所有模塊?
我的源文件位於src下,我的測試文件位於測試下。當我想運行一個測試文件時,比如說python myTest.py,我得到一個導入錯誤:「沒有名爲ASourceModule.py的模塊」。運行測試時Python導入src模塊
如何導入運行測試所需的所有模塊?
您需要到該目錄添加到路徑:
import sys
sys.path.append('../src')
如果你使用了很多也許把這個變成一個模塊。
這不是OS不可知的。請參閱[答案](https://stackoverflow.com/a/34938623/1509695)在linux和Windows上都有相同的代碼工作。 – matanster 2018-01-30 07:06:14
最好的(最易管理的)解決方案似乎是使用virtualenv和setuptools/distribute安裝您的(src)軟件包的一個副本。這樣你的測試就可以在完全「安裝」的系統上執行。
如果您不想將源路徑添加到每個測試文件或更改您的PYTHONPATH
,則可以使用nose來運行測試。
假設你的目錄結構是這樣的:
project
package
__init__.py
module.py
tests
__init__.py
test_module.py
你應該導入模塊通常在test_module.py
(例如from package import module
)。然後通過在項目文件夾中運行nosetests
來運行測試。您也可以通過執行nosetests tests/test_module.py
來運行特定的測試。
目錄中的__init__.py
是必要的,如果您想從其中運行測試。
您可以easy_install
或pip
輕鬆安裝鼻子:
easy_install nose
或
pip install nose
鼻子伸出了很多單元測試更多的方式,更多地瞭解它,你可以查看他們的網站:https://nose.readthedocs.org/en/latest/
+1「如果你想從裏面運行測試,tests目錄中的`__init __。py`是必須的。」 – 2018-02-14 15:13:15
在我的系統(Windows 10)上,我被要求做這樣的事情:
import sys
import os
sys.path.append(os.path.dirname(os.path.realpath(__file__)) + "/../src")
直接追加相對目錄sys.path
沒有工作
[運行單元測試用典型的測試目錄結構]的可能的複製(http://stackoverflow.com/questions/1896918/running-unittest-with-典型測試目錄結構) – Asqiir 2017-03-05 08:12:39