pytest只运行更改的文件?

时间:2016-01-30 03:18:51

标签: python pytest

我是Python的新手,试图学习工具集。

我已经想出了如何在我编码的时候让my_class.rb看我的测试。我无法弄清楚的一件事是,是否有办法做一个更智能的观察者,就像Ruby的Guard库一样。

使用guard + minitest,我得到的行为是,如果我保存像my_class_test.rb这样的文件,则执行enter,如果我在cli中点击long newLong = Longs.fromByteArray(oldLongByteArray); int newInt = Ints.fromByteArray(oldIntByteArray); ,则会运行所有测试。< / p>

到目前为止,使用pytest我还没有找到一种方法来只运行与上次触摸的文件相对应的测试文件,从而避免等待整个测试套件运行,直到我获得当前文件合格。

你怎么会去pythonistas呢?

谢谢!

4 个答案:

答案 0 :(得分:14)

一种可能性是将pytest-testmonpytest-watch一起使用。

它使用coverage.py来跟踪哪个测试涉及哪行代码,并且一旦更改了一行代码,它就会重新运行以某种方式执行该行的所有测试。

答案 1 :(得分:2)

要添加到上述 @The Compiler 的答案中,您可以使用pytest-watch的--runner选项让pytest-testmonpytest-watch一起玩:

ptw --runner "pytest --testmon"

答案 2 :(得分:2)

如果您使用git作为版本控制,则可以考虑使用pytest-picked。根据文档,这是一个插件:

运行与未暂存文件或当前分支相关的测试

演示

enter image description here

基本功能

  • 仅运行修改后的测试文件中的测试
  • 首先从修改后的测试文件中运行测试,然后运行所有未修改的测试

用法

pytest --picked

答案 3 :(得分:1)

我得到的最快设置是将@lmiguelvargasf @BenR和@TheCompiler答案结合到此

ptw --runner "pytest --picked --testmon"

您首先要安装它们

pip3 install pytest-picked pytest-testmon pytest-watch