5

在过去的几个月里,我一直在使用鼻子测试来运行我的 Python 单元测试。

它确实可以完成这项工作,但它对于直观地查看哪些测试正在运行或正在破坏并不是很好。

我使用了其他几个基于 GUI 的单元测试框架,它们提供了单元测试状态的可视化快照,并提供了向下钻取功能以获取详细的错误消息。

Nosetests 将其大部分信息转储到控制台,让开发人员筛选细节。

有什么建议吗?

4

4 回答 4

4

您可以使用rednose插件为您的控制台着色。有了它,视觉反馈要好得多。

于 2010-03-30T13:23:01.143 回答
2

我使用 Trac + Bitten 进行持续集成,这是相当复杂的设置,需要大量时间来进行 RTFM、设置和维护一切,但我可​​以获得包含失败测试和错误消息以及失败测试图表的漂亮可视化报告,随着时间的推移,pylint 问题和代码覆盖率。

Bitten是 Trac 的持续集成插件。它具有主从架构。Bitten master 与 Trac 集成并一起运行。Bitten slave 可以在任何与 master 通信的系统上运行。它会定期轮询 master 以获取构建任务。如果有一个待处理的任务(有人最近提交了一些东西),master 会向 slave 发送类似于 ant 的 build.xml 的“build recipe”,slave 会按照这个 recipe 并返回结果。配方可以包含诸如“从该存储库中签出代码”、“执行此 shell 脚本”、“在此目录中运行鼻子测试”之类的指令。然后构建报告和统计信息显示在 Trac 中。

于 2009-11-18T00:37:29.887 回答
0

我知道这个问题是 3 年前提出的,但我目前正在开发一个 GUI,以便在我参与的项目中更容易使用鼻子测试。

我们的项目使用PyQt,这使得从这个 GUI 开始非常简单,因为它提供了创建界面所需的一切。我使用 Python 的时间不长,但它相当容易掌握,所以如果你知道自己在做什么,只要你有时间,它会是完美的。

您可以将 PyQt 设计器中创建的 .UI 文件转换为 python 脚本:

pyuic4 -x interface.ui -o interface.py

您可以在这里获得一些很好的教程来感受 PyQt 。希望对某人有所帮助:)

于 2012-07-11T13:07:09.397 回答
0

我喜欢在我的编辑器旁边打开第二个终端,在其中我只是运行一个循环,每次任何文件更改时都会重新运行鼻子测试(或任何测试命令,例如普通的旧单元测试)。然后,您可以在编辑器窗口中保持焦点,同时在每次您在编辑器中点击“保存”时看到测试输出更新。

我不确定 OP 的“向下钻取”是什么意思,但我个人从测试输出中需要的只是失败回溯,这当然会在测试失败时显示。

当您的代码和测试编写良好时,这尤其有效,因此绝大多数测试只需几毫秒即可运行。我可能会在编辑或调试时按照上述循环运行这些快速单元测试,然后在最后提交之前手动运行任何运行时间更长的测试。

您可以使用 Bash 'watch' 手动重新运行测试(但这只是每 X 秒运行一次。这很好,但它还不够快,无法让我开心。)

或者我写了一个快速的python包'rerun',它轮询文件系统的变化,然后重新运行你给它的命令。轮询更改并不理想,但它很容易编写,完全跨平台,如果您告诉它每 0.25 秒轮询一次,它会相当敏捷,即使是大型项目也不会给我带来任何明显的延迟或系统负载(例如 Python 源代码树),即使在复杂的情况下也能工作(见下文。) https://pypi.python.org/pypi/rerun/

第三种选择是使用更通用的“等待文件系统更改”程序,例如“看门狗”,但这似乎对我的需求很重要,而且像这样监听文件系统事件的解决方案有时不能按我预期的那样工作(例如如果 Vim 通过将 tmp 保存到其他地方然后将其移动到适当位置来保存文件,则有时发生的事件不是您所期望的。)因此“重新运行”。

于 2014-01-20T12:36:43.747 回答