web-dev-qa-db-ja.com

pytestの.cacheディレクトリの場所を変更する方法はありますか?

Pytestの.cacheディレクトリの場所をenv変数WORKSPACEに変更できるようにする必要があります。サーバーのアクセス許可が制御できないため、ユーザーにはテストの実行元のディレクトリに書き込むアクセス許可がないため、このエラーが発生します。

py.error.EACCES: [Permission denied]: open('/path/to/restricted/directory/tests/.cache/v/cache/lastfailed', 'w')

.cacheディレクトリのパスを環境変数WORKSPACEに設定する方法はありますか?

20
nonbot

「cacheprovider」プラグインを無効にすることで、.cache/の作成を防ぐことができます。

py.test -p no:cacheprovider ...
24
vog

テストの親ディレクトリの1つにpytest.iniという名前の空のファイルを作成できます。これは、.cacheが作成されるrootdirになります。

https://pytest.org/latest/customize.html を参照してください

理想的ではありませんが、何らかの形でカスタマイズできます。

7
Wernight

PyTest 3.2以降、.cacheディレクトリの場所を設定するためのコマンドラインオプションがあるはずです: https://docs.pytest.org/en/latest/customize.html#confval -cache_dir

ただし、PyTest 3.2.5を使用すると、これはunrecognized option: --cache_dirエラーで失敗します。誰かがこれを機能させることができるなら、声を上げてください。

1
Dirk

Pytest 3.2以降、cache_dirファイルでpytest.iniオプションを指定できます。

#pytest.ini
cache_dir = .my_cache_dir

代わりにコマンドライン引数を使用する場合は、次のスイッチを使用できます。

pytest tests -o cache_dir=.my_cache_dir

-oを使用すると、コマンドライン引数としてpytest.ini固有の構成を指定(およびオーバーライド)できます。

1
SilentGuy

コマンドラインでキャッシュディレクトリを変更する明示的なオプションはありませんが、代わりに-oオプションを使用してpytest.iniのオプションを上書きすることができます。

pytest -o cache_dir=$WORKSPACE ...

pytest --helpオプションの詳細については、-oの出力を参照してください。

また、参考までにpytest3.7.1を使用しています。

0