web-dev-qa-db-fra.com

Est-il possible de changer l'emplacement du répertoire .cache de pytest?

Je dois pouvoir modifier l'emplacement du répertoire .cache de pytest en variable env, WORKSPACE. En raison d'autorisations de serveur hors de mon contrôle, je rencontre cette erreur car mon utilisateur ne dispose pas de l'autorisation nécessaire pour écrire dans le répertoire à partir duquel les tests sont exécutés:

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

Est-il possible de définir le chemin d'accès du répertoire .cache à la variable d'environnement WORKSPACE?

18
nonbot

Vous pouvez empêcher la création de .cache/ en désactivant le plug-in "cacheprovider":

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

Vous pouvez créer un fichier vide appelé pytest.ini dans l’un des répertoires parents de votre test. Ce fichier deviendra la rootdir dans laquelle le .cache sera créé.

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

Ce n'est pas idéal mais cela permet une certaine forme de personnalisation.

7
Wernight

Depuis PyTest 3.2, il est supposé exister une option de ligne de commande permettant de définir l’emplacement du répertoire .cache: https://docs.pytest.org/en/latest/customize.html#confval-cache_dir

Cependant, en utilisant PyTest 3.2.5, cela échoue pour moi avec une erreur unrecognized option: --cache_dir. Si quelqu'un est capable de faire fonctionner cela, veuillez en parler.

1
Dirk

Il n'y a pas d'option explicite pour changer le répertoire de cache sur la ligne de commande, mais il est possible de remplacer les options dans pytest.ini avec l'option -o à la place:

pytest -o cache_dir=$WORKSPACE ...

Voir la sortie de pytest --help pour plus d'informations sur l'option -o.

Aussi, pour référence, j'utilise pytest 3.7.1.

0
vardaofthevalier