2011-03-10 103 views
1

我在eclipse中開發python。因此,python src文件和測試文件位於不同的目錄中。如何運行python測試文件

問題是:我們如何在測試文件夾中的命令行特定測試文件上運行?這些顯然取決於src文件夾中的文件。

乾杯

編輯:如果我運行

python test/myTestFile.py 

我得到的相關性錯誤,例如。 ImportError:沒有名爲SrcFile1的模塊

回答

5

您需要確保您的PYTHONPATH設置正確,以便命令行解釋程序可以找到您的軟件包或從Eclipse Pydev內運行測試用例。 更新:另一種選擇:使用nose運行測試可能會使事情變得更容易,因爲它可以自動發現軟件包和測試用例。

如果你的項目佈局,像這樣:

/home/user/dev/ 
    src/pkg1/ 
     mod1.py 

    test/ 
     mod1_test.py 

用途:PYTHONPATH=$HOME/dev/src python test/mod1_test.py。我還建議使用distributevirtualenv來設置您的項目以進行開發。

響應更新在評論質疑:

這提供瞭如何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的許多教程來設置它們,看看它們是否適合你的項目。

+0

謝謝!我意識到pythonpath變量與運行測試的變量設置在同一行。有沒有辦法永久添加src文件夾,以便在運行測試時不需要重寫路徑?或者是什麼發行和virtualenv做? – Karan

+0

我會更詳細地更新答案。 – samplebias

1

有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可以是一個空文件。