1

我有一系列的单元测试,我正在用鼻子运行。对于我的一些测试,我想从中删除模块的路径,sys.path因此与我正在测试的内容没有冲突。

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

如果我运行 Python 解释器并调用sys.path'/path/to/remove/from/sys/path'则列表中存在 。但是,一旦调用了nosetests,上面的代码就找不到它并给我一个“未在列表中找到”错误。

为什么鼻子无法找到路径sys.path

4

2 回答 2

1

你不是这个意思吗?

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

如果鼻子找不到它,sys.path那么它就不在那里...... 鼻子自己做了很多玩弄sys.path。为什么不打印sys.path并看看它在鼻子下运行时的实际情况

于 2010-10-16T07:42:05.180 回答
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" 
于 2010-10-28T12:05:58.493 回答