有没有办法改变pytest的.cache目录的位置?

时间:2015-10-23 20:10:09

标签: python caching directory pytest

我需要能够将pytest的.cache目录的位置更改为env变量WORKSPACE。由于服务器权限超出我的控制范围,我遇到此错误,因为我的用户没有权限在运行测试的目录中写入:

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

有没有办法将.cache目录的路径设置为环境变量WORKSPACE?

5 个答案:

答案 0 :(得分:23)

您可以通过禁用" cacheprovider"来阻止.cache/的创建。插件:

py.test -p no:cacheprovider ...

答案 1 :(得分:7)

您可以在测试的某个父目录中创建一个名为pytest.ini的空文件,这些文件将成为rootdir将在其中创建的.cache

请参阅sigwait

这不是理想的,但它允许某种形式的定制。

答案 2 :(得分:1)

自PyTest 3.2以来,应该有一个命令行选项来设置.cache目录的位置: https://docs.pytest.org/en/latest/customize.html#confval-cache_dir

但是,使用PyTest 3.2.5时,如果出现unrecognized option: --cache_dir错误,则会失败。如果有人能够使这个工作,请说出来。

答案 3 :(得分:0)

没有在命令行上更改缓存目录的显式选项,但是可以使用-o选项替代pytest.ini中的选项:

pytest -o cache_dir=$WORKSPACE ...

有关pytest --help选项的更多信息,请参见-o的输出。

此外,我使用pytest 3.7.1作为参考。

答案 4 :(得分:0)

从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特定的配置作为命令行参数。