tox Web サイトにリストされている最初の機能は、「さまざまな Python バージョンとインタープリターでパッケージが正しくインストールされていることを確認する」です。これにより、setup.py を台無しにすると、テストが通らなくなり、setup.py が悪くなったという事実が警告されると思います。
そうではありません。モジュールまたはパッケージを tox.ini と同じディレクトリに配置するという通常のパターンに従うと、実際にはコードがローカル ディレクトリ (別名 {toxinidir}) からインポートされます。これは、setup.py をまったく何も行わなくてもよいことを意味し、tox は問題がないことを通知します。その時点で、pypi にプッシュして使用してみるまで、問題に気付かないのは非常に簡単です。これは、tox で防止したい種類の問題です。
主な問題は、テスト中に空の文字列が sys.path に表示されることです。Python はこれを現在の作業ディレクトリを意味すると解釈し、そこからインポートします。
テスト中にローカル ディレクトリが使用されないように tox を構成する方法はありますか?
現在、私の回避策は ですがcd {envtmpdir} && coverage run && mv .coverage {toxinidir}
、これは明らかに醜いハックです。
ここでは、コードの 2 つのバージョンを示します。
私の目標は、上記の問題を回避し、すべてのプロジェクトでの使用を推奨するのに十分合理的な tox 構成を見つけることです。