我最近几个月一直在使用nosetests来运行我的Python单元测试。
它确实能够胜任工作,但是它并不适合提供测试工作的视觉化展示,无法清晰地展示哪些测试正在工作或者失败了。
我曾经使用过其他几个基于GUI的单元测试框架,它们可以提供一个视觉快照,展示你的单元测试状态,并且提供钻取功能以获取详细的错误信息。
Nosetests将大部分信息都输出到控制台,开发人员需要自己筛选详细信息。
有什么推荐吗?
我最近几个月一直在使用nosetests来运行我的Python单元测试。
它确实能够胜任工作,但是它并不适合提供测试工作的视觉化展示,无法清晰地展示哪些测试正在工作或者失败了。
我曾经使用过其他几个基于GUI的单元测试框架,它们可以提供一个视觉快照,展示你的单元测试状态,并且提供钻取功能以获取详细的错误信息。
Nosetests将大部分信息都输出到控制台,开发人员需要自己筛选详细信息。
有什么推荐吗?
我想在我的编辑器旁边打开第二个终端,其中只运行一个循环,每当任何文件更改时重新运行nosetests(或任何测试命令,例如纯粹的unittests)。然后,您可以保持焦点在编辑器窗口中,同时看到测试输出每次点击编辑器中的“保存”时更新。
我不确定OP所说的“具体了解”,但就个人而言,我从测试输出中所需的全部仅是失败的回溯,这当然会在测试失败时显示出来。
当您编写的代码和测试很好时,这特别有效,以便您的绝大多数测试只需要几毫秒即可运行。我可能会像上面描述的那样在编辑或调试时运行这些快速单元测试,然后在提交之前手动运行任何长时间运行的测试。
您可以使用Bash'watch'手动重新运行测试(但这只是每隔X秒运行一次它们。这很好,但并不足以使我感到满意。)
另外,我编写了一个快速的Python包'rerun',它会轮询文件系统的更改,然后重新运行您给出的命令。轮询更改并不理想,但很容易编写,完全跨平台,如果您告诉它每0.25秒轮询一次,则相当迅速,即使在大型项目(例如Python源代码树)中也不会导致任何明显的延迟或系统负载,并且即使在复杂情况下也能正常工作(见下文)。 https://pypi.python.org/pypi/rerun/
第三种选择是使用更通用的“等待文件系统更改”的程序,如“watchdog”,但这对我的需求来说似乎太重量级了,而像这样监听文件系统事件的解决方案有时不会按照我预期的那样工作(例如,如果Vim通过在其他地方保存tmp文件,然后将其移动到正确位置来保存文件,则有时发生的事件不是您所期望的事件)。因此,我选择了“rerun”。