[英]ImportError with unittest and multiples modules
我有一個具有以下結構的項目:
/
├── test
│ ├── __init__.py
│ └── test_do_stuff.py
└── my_package
├── do_stuff.py
├── helpers
│ ├── my_helper.py
│ └── __init__.py
├── __init__.py
└── main_do_stuff.py
運行測試時,我收到ImportError: No module named 'helpers'
當測試導入my_package.do_stuff
,它會嘗試導入helpers.my_helper
運行測試的命令是python3 -m unittest
(這是正確的方法嗎?)
所有__init__.py
都是空的。
test_do_stuff.py:
import unittest
import my_package.do_stuff
# ...
do_stuff.py:
import helpers.my_helper
# ...
main_do_stuff.py:
import do_stuff
python3 my_package/main_do_stuff.py
有效。 main 調用與測試相同的函數。
問題是否來自我啟動測試的方式?
還是我的結構?
我試圖找到一個解決方案,它不涉及過多地弄亂路徑或編寫大量代碼來運行測試。 (應該有一種簡單的方法可以將測試與代碼分開,不是嗎?)
問題是使用隱式相對導入:
import helpers.my_helper
應該
import my_package.helpers.my_helper
您的問題是 python 不接受您的目錄層次結構。 只需將測試文件放在根目錄下(例如 /everything ),它就可以正常工作。 您的目錄可能如下所示:
/
└── everything
├── __init__.py
├── test_do_stuff.py
└── my_package
├── do_stuff.py
├── helpers
│ ├── my_helper.py
│ └── __init__.py
├── __init__.py
└── main_do_stuff.py
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.