我有一系列单元测试,我正在使用 nose 运行。对于我的一些测试,我想从sys.path
中删除模块的路径,因此与我测试的内容没有冲突。
sys.path.remove('/path/to/remove/from/sys/path')
如果我运行Python解释器并调用sys.path
,则'/path/to/remove/from/sys/path'
就在列表中。但是,一旦调用了nosetests,上面的代码就找不到它并给我一个“找不到列表”的错误。
为什么鼻子无法找到sys.path
中的路径?
答案 0 :(得分:1)
你的意思不是吗?
sys.path.remove('/path/to/remove/from/sys/path')
如果 nose 无法在sys.path
中找到它,那么它就不存在了...... nose 对sys.path
做了很多努力在其自己的。为什么不打印sys.path
并查看在 nose
答案 1 :(得分: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"