2014-10-31 78 views
1

我在一個單獨的目錄中有一堆unittest測試用例。還有一個目錄只包含用於測試的幫助程序腳本。所以,我的文件樹看起來像在test_dir*這個運行測試前更改cwd

test_dir1 
test_dir2 
test_dir3 
helper_scripts 

每個Python文件將這些行:

import sys 
sys.path.append('../helper_scripts') 
import helper_script 

這一切工作正常,只要我跑從他們的目錄中的測試。不過,我想是在項目的根,只是運行:

py.test 

,並有它遍歷所有的目錄,並運行它找到的每個測試。問題在於測試是從錯誤的目錄運行的,所以sys.path.append不會附加helper_scripts目錄,它會附加項目根目錄的父項。這使得所有的導入都會以Import Error失敗。

有沒有辦法告訴py.test從他們的目錄運行測試腳本?即。在執行它們之前更改cwd?如果沒有,我還可以使用另一個測試跑步者嗎?

回答

0

我會建議你,而不是配置您的環境,使import helper_scripts無論將當前目錄的工作。這是推薦的方法。

如果你絕對必須雖然,你可以改用相對進口:

from .. import helper_script 
+1

你到底如何做到這一點?您是否必須更改腳本中的當前目錄? – 2014-11-02 01:51:49

-1
os.chdir("newdir") 

將改變當前的工作目錄

+0

FYI:見於低質量審覈隊列這個答案。 **看起來不錯**。 – Paul 2014-10-31 05:35:25

+1

是的,但我寧願不修改每個python文件。我正在尋找py.test(或另一個測試運行器)的一些參數或設置,它會告訴它在執行之前首先轉換到python文件的目錄。 – 2014-10-31 05:47:09

相關問題