【问题标题】:Why can't nosetests find one the elements in sys.path?为什么鼻子测试不能找到 sys.path 中的元素之一?
【发布时间】:2010-10-16 02:44:49
【问题描述】:

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

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

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

为什么 nosesys.path 中找不到路径?

【问题讨论】:

    标签: python nose nosetests pythonpath


    【解决方案1】:

    你不是这个意思吗?

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

    如果 nosesys.path 中找不到它,那么它就不存在了……nose 自己对 sys.path 进行了很多欺骗。为什么不打印sys.path 看看在nose

    下运行时的实际情况

    【讨论】:

    • 感谢您的关注。我已经编辑了这个问题。我还在nose 和Eclipse 中打印了几次测试迭代,但是我没有看到关于何时包含或排除某些路径的模式。现在,我创建了一个简单的脚本来在运行鼻子测试之前设置 PYTHONPATH。
    【解决方案2】:

    创建一个脚本 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" 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-23
      • 1970-01-01
      • 2012-10-03
      • 1970-01-01
      • 1970-01-01
      • 2013-07-06
      相关资源
      最近更新 更多