Linux サーバーでコードを実行しています。たまたまMacであるラップトップからコードを編集しています。netatalk を使用して、ラップトップからサーバーにコード ディレクトリを簡単にマウントできるようにしています。私は最近、Pyramid と SQLalchemy を使い始め、自分の開発プラクティスに「ユニットテスト」を追加したいと考えました。
OS X / Netatalk は、ラップトップから任意のディレクトリを表示すると、.AppleDouble サブディレクトリを作成します。通常、これは問題ではありません。.AppleDouble サブディレクトリを無視するだけです。
テストを実行しているディレクトリにアクセスすると、OS X / netatalk は .AppleDouble ディレクトリを追加し、このディレクトリに、親ディレクトリに存在するものとまったく同じ名前のファイルを見つけることができます。unittest は "test*.py" のパターンを探して見つけたすべてのディレクトリを再帰的に検索し、それらのファイルをインポートしようとするため、これは問題です。.AppleDouble ディレクトリ (アイコン データ、デスクトップ配置などを含む) 内のすべてのファイルで失敗します。
私は、netatalk を使用しないという選択肢があることを知っています。できれば避けたいところです。
unittest のコード (具体的には loader.py) を見ると、テスト ケースの検出は、discover() という関数と関連する関数 _find_files() で行われているようです。
Discover() および _find_files() 関数をオーバーライドする最善の方法についての考えを探しています。私は Python ライブラリをオーバーライドした経験があまりなく、明らかなフックも見当たりません。
それが重要な場合、私はvirtualenvを使用しており、virtualenvにunittestのコピーを配置すると、システムバージョンが上書きされると確信しています。それはおそらく良いスタートですが、他の人が単なる良い解決策ではなく、より良い解決策と考えるものを知りたいと思っています.