2010-10-16 73 views
1

我有一系列的單元測試,我正在運行鼻子。對於我的一些測試,我想從sys.path中刪除一個模塊的路徑,所以與我測試的內容沒有衝突。爲什麼nosetests不能找到sys.path中的元素?

sys.path.remove('/path/to/remove/from/sys/path') 

如果我運行Python解釋器,並調用sys.path'/path/to/remove/from/sys/path'有沒有在列表中。但是,一旦調用了nosetests,上面的代碼就找不到它,並給我一個「找不到列表」的錯誤。

爲什麼鼻子無法找到sys.path的路徑?

回答

0

創建一個腳本get_mod_py_path.py來設置PYTHONPATH。在這種情況下,它將丟棄衝突的路徑。

import os 
import sys 

# Remove the global Python modules from the PYTHONPATH. 
path = os.environ['PYTHONPATH'].split(os.pathsep) 
if os.environ['GLOB_PY_MODULES'] in path: 
    path.remove(os.environ['GLOB_PY_MODULES']) 

# Construct the new path and print it. 
path = ':'.join(path) 
print path 

然後在調用nosetests一個bash使用它。

PYTHONPATH=`python get_mod_py_path.py` 
nosetests --verbosity=1 --with-gae --where="../tests/unit" --gae-application="../app" 
1

你不是這個意思嗎?

sys.path.remove('/path/to/remove/from/sys/path') 

如果鼻子不能sys.path找到它,然後它不存在... 鼻子做大量與sys.path自身diddling的。爲什麼不打印sys.path,看看它在機頭下運行時的實際情況

+0

謝謝你的追捕。我編輯了這個問題。我還在鼻子和Eclipse中打印了幾次迭代測試,但我沒有看到包含或排除某些路徑的模式。現在,我已經創建了一個簡單的腳本來在運行nosetests之前設置PYTHONPATH。 – 2010-10-16 20:20:54

相關問題