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?
Sie können die Erstellung von .cache/
verhindern, indem Sie das Plugin "cacheprovider" deaktivieren:
py.test -p no:cacheprovider ...
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.
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.
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).
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.