为什么鼻子测试无法找到 sys.path 中的元素?

发布于 2024-09-27 20:54:11 字数 380 浏览 16 评论 0原文

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

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

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

为什么nose无法在sys.path中找到路径?

I have a series of unit tests that I'm running with nose. For some of my tests, I'd like to remove a module's path from the sys.path so there is no conflict with what I am testing.

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

If I run the Python interpreter and call sys.path, the '/path/to/remove/from/sys/path' is there in the list. However, once nosetests is called, the above code cannot find it and gives me a "not found in list" error.

Why is nose not able to find the path in sys.path?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

只是我以为 2024-10-04 20:54:11

你不是这个意思吗?

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

如果nosesys.path中找不到它,那么它就不在那里......nose做了很多欺骗sys.path 本身。为什么不打印 sys.path 并查看它在鼻子下运行时的实际情况

Didn't you mean this?

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

If nose can't find it in sys.path then it wasn't there... nose does lots of diddling with sys.path on its own. Why not print sys.path and see what it actually is when run under nose

一抹微笑 2024-10-04 20:54:11

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

Create a script, get_mod_py_path.py, to set the PYTHONPATH. In this case, it is dropping the conflicted path.

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

Then use it in a bash that calls nosetests.

PYTHONPATH=`python get_mod_py_path.py`   
nosetests --verbosity=1 --with-gae --where="../tests/unit" --gae-application="../app" 
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文