pytest-cache背后的想法是什么?

时间:2014-10-15 12:41:28

标签: python testing pytest

pytest-cache

它似乎是一个缓存func / args->结果对的工具,甚至可以在testsuite-runs之间保留它们。这对加快速度似乎是一个好主意。但是,我没有注意到任何提及自动检测功能源代码的更改并使相应的缓存条目无效。这似乎打败了运行测试套件的目的,因为测试的代码更改不会被反映出来。

3 个答案:

答案 0 :(得分:5)

pytest-cache做了两件事:

  • 提供了一种机制,通过该机制,其他插件可以通过config.cache.get|set获取/设置值。例如,pytest-pep8pytest-flakes使用它来存储上次检查的mtime,以避免一直重新检查文件。

  • 存储测试失败,以便您可以运行--lf仅运行上次失败,--ff运行最后一次失败,然后运行其余测试。

该功能必将使用pytest-2.7(截至今天未发布)或后续版本移至核心。

答案 1 :(得分:1)

pytest的目的似乎是促进仅运行先前运行失败的测试。据推测,这使您可以将测试运行集中在正在被修改的代码上,直到这些测试工作为止,此时您应该清除缓存或使用--ff选项再次运行所有测试。

答案 2 :(得分:1)

pytest 3.4.0中,所做的更改之一是:

  

在社区反馈名称.cache没有明确说明它被pytest使用后,默认缓存目录已从.cache重命名为.pytest_cache

根据docspytest-cache已集成在pytest 2.8中,插件提供了两个命令行选项,用于重新运行上次pytest调用中的失败:

  • --lf, --last-failed - 只重新运行失败。
  • --ff, --failed-first - 首先运行故障,然后运行其余测试。 对于清理(通常不需要),--cache-clear选项允许在测试运行之前删除所有跨会话缓存内容。

最好从您的存储库中排除此目录(.pytest_cache),并将其排除在GitHub's default .gitignore file之外。