7

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 構成を見つけることです。

4

1 に答える 1

1

nosetests実行中に変更されることに気付きsys.pathました。チェックアウトされたコードを最初に追加しています。これは基本的に、トックスが作成しようとしている分離を壊します。これを修正するには、-Pフラグをに追加するだけですnosetests:

[tox]
envlist = py27

[testenv]
commands=
    nosetests -P tests
deps=
    nose
    -rrequirements.txt

また、nose がテスト以外のコードを ing しないようにするために、追加(nose をディレクトリtestsに向ける)する必要がありました (チェックアウトに組み込まれている場合と組み込まれていない場合がある C 拡張機能を使用しています)。tests/import

于 2014-08-08T07:56:59.540 に答える