目前有以下文件層次:的Python:單元測試模塊和相對導入
\package
__init__.py
run_everything.py
\subpackage
__init__.py
work.py
work1.py
work2.py
\test
__init__.py
test_work.py
test_work1.py
我的第一個問題是關於相對進口。假設在\ subpackage \ work.py我有一個名爲custom_function()的函數,我想在test_work.py中測試該函數。出於某種原因,我無法弄清楚如何從一個模塊導入到另一個模塊。嘗試from .. subpackage.work1 import custom_function()
似乎沒有工作,併產生錯誤Attempted relative import in non-package
有沒有什麼辦法來解決這個問題?
2) 我想運行run_everything.py中的所有測試文件和一個函數,在每個test_work * .py文件中添加一個suite()函數,將每個unit_testing類添加到suite.addTest(unittest。 makeSuite(TestClass)),最後將它們導入到頂級run_everything.py中,這是Python2.7中最常用的方式嗎?
我強烈建議不要使用相對導入,尤其是在測試中。 – Amber 2012-08-12 04:03:03
那麼他們會去哪裏?將測試模塊放在子包中會強制相同導入語句no? – zhuyxn 2012-08-12 04:18:15
通常情況下,您不會將測試放在包中,而是放在單獨的目錄樹中。 – Amber 2012-08-12 04:21:39