我在eclipse中開發python。因此,python src文件和測試文件位於不同的目錄中。如何運行python測試文件
問題是:我們如何在測試文件夾中的命令行特定測試文件上運行?這些顯然取決於src文件夾中的文件。
乾杯
編輯:如果我運行
python test/myTestFile.py
我得到的相關性錯誤,例如。 ImportError:沒有名爲SrcFile1的模塊
我在eclipse中開發python。因此,python src文件和測試文件位於不同的目錄中。如何運行python測試文件
問題是:我們如何在測試文件夾中的命令行特定測試文件上運行?這些顯然取決於src文件夾中的文件。
乾杯
編輯:如果我運行
python test/myTestFile.py
我得到的相關性錯誤,例如。 ImportError:沒有名爲SrcFile1的模塊
您需要確保您的PYTHONPATH設置正確,以便命令行解釋程序可以找到您的軟件包或從Eclipse Pydev內運行測試用例。 更新:另一種選擇:使用nose運行測試可能會使事情變得更容易,因爲它可以自動發現軟件包和測試用例。
如果你的項目佈局,像這樣:
/home/user/dev/
src/pkg1/
mod1.py
test/
mod1_test.py
用途:PYTHONPATH=$HOME/dev/src python test/mod1_test.py
。我還建議使用distribute
和virtualenv
來設置您的項目以進行開發。
響應更新在評論質疑:
這提供瞭如何PYTHONPATH環境變量擴展Python的包烤焦 CH路徑:
% PYTHONPATH=foo:bar python -c 'import sys; print sys.path[:3]'
['', '/home/user/foo', '/home/user/bar']
# exporting the variable makes it sticky for your current session. you can
# add this to your shell's resource file (e.g. ~/.profile) or source
# it from a textfile to save typing:
% export PYTHONPATH=bar:baz
% python -c 'import sys; print sys.path[:3]'
['', '/home/user/foo', '/home/user/bar']
% python -c 'import sys; print sys.path[:3]'
['', '/home/user/foo', '/home/user/bar']
上面應該讓你在短期內會。 virtualenv使用分發和更高的一次性安裝成本,但使用它們可獲得更長期的收益 。當你有機會的時候,閱讀一些關於SO的許多教程來設置它們,看看它們是否適合你的項目。
有2個主要的解決方案。無論如何,您需要使用例如PYTHONPATH環境變量來告訴測試源是哪裏,或者您需要通過插入相關的__init__.py
文件來使測試和生產代碼成爲同一模塊樹的一部分。在後一種方法,該樹可能是這個樣子:
|-- qbit
| |-- __init__.py
| |-- master.py
| |-- policy.py
| |-- pool.py
| |-- synchronize.py
| `-- worker.py
`-- test
|-- __init__.py
|-- support.py
|-- test_policy.py
|-- test_synchronize.py
`-- test_worker.py
__init__.py
可以是一個空文件。
謝謝!我意識到pythonpath變量與運行測試的變量設置在同一行。有沒有辦法永久添加src文件夾,以便在運行測試時不需要重寫路徑?或者是什麼發行和virtualenv做? – Karan
我會更詳細地更新答案。 – samplebias