edA*_*a-y 38 python performance pytest
有没有办法加快重复执行py.test?即使我指定在命令行上执行哪些文件,它似乎也会花费大量时间来收集测试.我知道它不是磁盘速度问题,因为在所有.py文件中运行pyflakes的速度非常快.
sca*_*nny 16
使用norecursedirspytest.ini或tox.ini中的选项可以节省大量的收集时间,具体取决于工作目录中的其他文件.当我有这样的测试时,我的收集时间大约减少了一半(0.34s vs 0.64s).
如果你已经像我一样使用tox,你只需要在tox.ini中添加以下内容:
[pytest]
norecursedirs = docs *.egg-info .git appdir .tox
Run Code Online (Sandbox Code Playgroud)
您也可以将它添加到一个独立的pytest.ini文件中.
pytest文档包含有关py.test配置文件的更多详细信息.
我遇到了同样的问题,我py.test在我的项目的根目录调用,我的测试是三个子目录.该集合在实际测试执行0.4秒之前需要6-7秒.
我的解决方案最初是py.test使用测试的相对路径调用:
py.test src/www/tests/
Run Code Online (Sandbox Code Playgroud)
如果这样做也会加快您的收藏速度,您可以将测试的相对路径添加到addopts您的设置的末尾pytest.ini- 例如:
[pytest]
addopts = --doctest-glob='test_*.md' -x src/www/tests/
Run Code Online (Sandbox Code Playgroud)
这将收集+执行时间减少到大约一秒钟,我仍然可以py.test像以前一样打电话.
对我来说,添加PYTHONDONTWRITEBYTECODE=1环境变量实现了巨大的加速!请注意,我使用的是网络驱动器,这可能是一个因素。
set PYTHONDONTWRITEBYTECODE=1export PYTHONDONTWRITEBYTECODE=1subprocess.run:添加关键字env={'PYTHONDONTWRITEBYTECODE': '1'}请注意,前两个选项仅在当前终端会话中保持活动状态。