要求我们推荐或查找工具、库或最喜欢的非现场资源的问题对于Stack Overflow来说是离题的,因为它们往往会吸引固执己见的答案和垃圾邮件。相反,描述问题以及迄今为止为解决该问题所做的工作。
Closed 9 years ago.
Python是否有一个与标准xUnit风格的测试框架兼容的单元测试框架?如果是,它是什么,在哪里,有什么好处吗?
Python有几个测试框架,包括unittest
、doctest
nose。最像xUnit的是unittest
,它记录在Python.org上。
我推荐鼻子。
它是单元测试框架中最Python的。测试运行器同时运行doctests和unittests,因此您可以自由使用任何您喜欢的测试风格。
有testoob这是一套非常完整的测试。还有xUnit,也有一个很好的报告选项
考虑py.test。与NUnit不完全相似,但非常好,具有很好的功能,包括测试自动发现和a“观察测试和代码-当发生变化时,重新运行上次失败的测试。一旦所有的测试都通过了,只要有什么变化,就切换到运行所有的测试。”选项。
@Greg:PyUnit作为<code>unittest</code>包含在标准库中
我推荐Nose。
在合理简单的安装之后,你只需要在你的项目文件夹中运行“nosetests”,Nose就会找到你所有的测试并运行它们。我还喜欢插件的集合(覆盖率、GAE等),以及从Python脚本中直接调用Nose的能力。
还有PyUnit这可能就是您正在寻找的。
从来没有使用过xUnit,所以我不能告诉你这些框架是好是坏,但这里是我编写的一个脚本,它使用单元测试框架(检查API是否正常工作)和doctest(检查我给出的工作示例)
我唯一的问题是检查引发异常的东西有点复杂(你必须向它传递一个引发异常的函数/lambda,而不仅仅是命令本身,就像框架的其他部分一样)。。除此之外,它可靠地做了它应该做的事情,并且它已经被包含在默认的python发行版中很长一段时间了。
鼻子似乎是灵活性和便利性的最佳组合。它在一个框架中运行单元测试、doctests、覆盖率(带扩展)和py.test-like测试,并且做得很好。它非常受欢迎,为Komodo Edit也做了一些IDE集成,在其他地方看到它也不会感到惊讶。
我喜欢它有一个强烈的原因:在用另一个框架编写更广泛的测试之前,我几乎总是先进行doctest。这是因为,对于基本测试来说,医生一举两得。您可以同时获得可执行测试(尽管它们有时写得有点笨拙)以及API文档和交互式文档。当您使用命令行选项(--withdoctest)时,nose将使用捆绑的doctest扩展来运行这些。
我这么说是因为我以前的最爱来自py.test。虽然它很棒,但鼻子测试与我非常相似,我不会错过它,可以说,我喜欢将各种测试方法集成在一个屋檐下。YMMV,但我建议在选择另一个之前好好看看鼻子。如果你不熟悉py.test测试,你也应该看看它们。我觉得它们很棒,因为它们通常是以这样一种方式编写的,即在没有测试框架的情况下可以很容易地调试,这使得调试会话中涉及的系统不那么棘手。我发现这一点非常宝贵,同时在我看来,它们也比单元测试更容易编写。