Есть ли способ изменить расположение каталога pytest.cache?

Мне нужно изменить расположение каталога pytest.cache на переменную env, WORKSPACE. Из-за разрешений сервера из-под моего контроля я столкнулся с этой ошибкой, потому что у моего пользователя нет разрешения на запись в каталог, в котором выполняются тесты:

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

Есть ли способ установить путь каталога .cache к переменной среды WORKSPACE?

Ответы

Ответ 1

Вы можете предотвратить создание .cache/, отключив плагин "cacheprovider":

py.test -p no:cacheprovider ...

Ответ 2

Вы можете создать пустой файл с именем pytest.ini в одном из родительских каталогов вашего теста: это будет rootdir, в котором будет создан .cache.

См. https://pytest.org/latest/customize.html

Это не идеальный вариант, но он позволяет использовать некоторую форму настройки.

Ответ 3

Начиная с PyTest 3.2, предполагается, что это параметр командной строки для установки местоположения каталога .cache: https://docs.pytest.org/en/latest/customize.html#confval-cache_dir

Однако, используя PyTest 3.2.5, это не подходит для меня с ошибкой unrecognized option: --cache_dir. Если кто-нибудь сможет это сделать, пожалуйста, говорите.

Ответ 4

Нет явной опции для изменения каталога кэша в командной строке, но вместо этого можно переопределить опции в pytest.ini с -o опции -o:

pytest -o cache_dir=$WORKSPACE...

Смотрите вывод pytest --help для получения дополнительной информации о опции -o.

Также для справки я использую pytest 3.7.1.

Ответ 5

Начиная с 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 в качестве аргумента командной строки.