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.pathsys.pathの下を走ったときの実際の様子を印刷して確認してみませんか

于 2010-10-16T07:42:05.180 に答える
0

PYTHONPATH を設定するスクリプト get_mod_py_path.py を作成します。この場合、競合するパスを削除しています。

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 に答える