wake-up-neo.net

Gibt es eine Möglichkeit, den Speicherort des .cache-Verzeichnisses von pytest zu ändern?

Ich muss in der Lage sein, den Speicherort des .cache-Verzeichnisses von pytest in die env-Variable WORKSPACE zu ändern. Aufgrund von Serverberechtigungen, auf die ich keinen Einfluss habe, tritt dieser Fehler auf, weil mein Benutzer nicht berechtigt ist, in das Verzeichnis zu schreiben, in dem die Tests ausgeführt werden:

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

Gibt es eine Möglichkeit, den Pfad des Cache-Verzeichnisses auf die Umgebungsvariable WORKSPACE festzulegen?

18
nonbot

Sie können die Erstellung von .cache/ verhindern, indem Sie das Plugin "cacheprovider" deaktivieren:

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

Sie können eine leere Datei mit dem Namen pytest.ini in einem der übergeordneten Verzeichnisse Ihres Tests erstellen. In diesem Verzeichnis wird der rootdir erstellt, in dem der .cache erstellt wird.

Siehe https://pytest.org/latest/customize.html

Es ist nicht ideal, aber es ermöglicht eine Form der Anpassung.

7
Wernight

Seit PyTest 3.2 soll es eine Befehlszeilenoption zum Festlegen des Speicherorts des Verzeichnisses .cache geben: https://docs.pytest.org/en/latest/customize.html#confval-cache_dir

Bei Verwendung von PyTest 3.2.5 schlägt dies jedoch bei mir mit einem unrecognized option: --cache_dir-Fehler fehl. Wenn jemand in der Lage ist, dies zum Laufen zu bringen, melden Sie sich bitte.

1
Dirk

Ab Pytest 3.2 können Sie die Option cache_dir In der Datei pytest.ini Angeben.

#pytest.ini
cache_dir = .my_cache_dir

Wenn Sie stattdessen lieber ein Befehlszeilenargument verwenden möchten, können Sie die folgende Option verwenden:

pytest tests -o cache_dir=.my_cache_dir

Mit -o Können Sie die pytest.ini-spezifische Konfiguration als Befehlszeilenargument angeben (und überschreiben).

1
SilentGuy

Es gibt keine explizite Option zum Ändern des Cache-Verzeichnisses in der Befehlszeile, aber es ist möglich, die Optionen in pytest.ini mit der Option -o zu überschreiben:

pytest -o cache_dir=$WORKSPACE ...

Weitere Informationen zur Option pytest --help finden Sie in der Ausgabe von -o.

Als Referenz verwende ich auch pytest 3.7.1.

0