找到两次鼻子测试运行之间差异的好方法是什么?

时间:2014-07-28 14:02:49

标签: python unit-testing matplotlib nose nosetests

我正在尝试为此处的matplotlib准备拉取请求:https://github.com/shmuller/matplotlib.git。在与上游/主站(https://github.com/matplotlib/matplotlib.git)合并之后,我想知道是否有任何损坏,所以我在上游/主站上运行测试套件(python tests.py -v -a)。我明白了:

Ran 4688 tests in 555.109s
FAILED(KNOWNFAIL=330, SKIP=9, errors=197, failures=16)

现在在我合并的分支上:

Ran 4682 tests in 555.070s
FAILED(KNOWNFAIL=330, SKIP=9, errors=200, failures=18)

该死!很接近,但不一样!所以我确实打破了以前没有破坏过的东西。由于有成千上万的测试,以及许多错误和失败,因此找出我所破坏的内容似乎并不明显。

所以我的问题是:什么是一个很好的方法来找出哪些测试打破了以前没有被打破过?

tests.py基本上可以:

import nose
nose.main()

所以我希望nose中有一个功能可以帮助我弄清楚我的内容,但无法在帮助中找到任何内容(nosetests --help)。我显然可以记录和区分整个输出,但我希望有一个更优雅的解决方案。

1 个答案:

答案 0 :(得分:3)

将日志保存为两个文件AB。然后使用差异工具,例如MeldEmacs' M-x ediff了解差异。


如果您猜测哪些测试与您更改的代码相关,那么您可以运行

nosetests /path/to/test_file.py

修复与您更改的代码相关的错误,然后查看输出是否相同(通过运行diff)。


如果你跑

nosetests --with-id

然后在后续运行中,添加--failed标志将导致nosetests仅重新运行失败的测试。这也可以帮助你实现差异化。

nosetests --with-id --failed