noseのsys.path改竄を防ぐ
皆さんご愛用のテストランナーであるnose、これには便利機能があります。 以下のようなディレクトリ構造があったとします。
foo + src + foo + ... + lib
このときにnoseは デフォルトでfoo/srcとfoo/libをsys.pathに追加(insert)します。 つまりlibディレクトリのなかに同名のモジュールがあったらそちらが読み込まれます。
ひどいですね。
これを防ぐにはコマンドライン引数か環境変数で指定する必要があります。
-P, --no-path-adjustment Don’t make any changes to sys.path when loading tests [NOSE_NOPATH]
ちなみに対象のディレクトリはlibとsrcのみで、それらは文書に書かれていません。
ひどいですね。
Djangoのような予期しないパスの書き換えをしてほしくないときは
nosetests -P
覚えましたね?