Python中的单元测试

时间:2008-08-31 05:07:42

标签: python unit-testing

Python是否具有与标准xUnit样式的测试框架兼容的单元测试框架?如果是这样,它是什么,它在哪里,它是否有益?

9 个答案:

答案 0 :(得分:25)

Python有几个测试框架,包括unittestdoctestnose。最像xUnit的是unittest,它在Python.org上有记录。

答案 1 :(得分:9)

我建议nose

它是单元测试框架中最Pythonic的。测试运行器同时运行doctests和unittests,因此您可以自由使用您喜欢的任何测试方式。

答案 2 :(得分:3)

testoob这是相当完整的测试套件。也是xUnit-ie,并且有一个很好的报告选项

答案 3 :(得分:2)

@Greg:PyUnit作为unittest

包含在标准库中

答案 4 :(得分:2)

考虑py.test。不完全类似于NUnit,但非常好,具有良好的功能,包括测试自动发现和“观察测试和代码 - 当某些更改重新运行上次失败的测试时。一旦所有测试通过,切换到全部运行一些事情发生变化时的测试。“选项。

答案 5 :(得分:1)

我推荐Nose。

在合理的简单安装之后,您只需在项目文件夹中运行“nosetests”,Nose将找到所有测试并运行它们。我也喜欢插件(coverage,GAE等)的集合以及直接从我的Python脚本中调用Nose的能力。

答案 6 :(得分:0)

还有PyUnit可能是您正在寻找的。

答案 7 :(得分:0)

从未使用过xUnit,所以我不能告诉你框架是不是比较好/坏,但here是我编写的一个使用unittest框架的脚本(检查API是否正常工作),和doctest(检查我给出的工作的例子)

我唯一的问题是检查某些引发异常有点复杂(你必须传递一个引发异常的函数/ lambda,而不仅仅是命令本身,就像框架的其余部分一样)。除此之外,它可以做到应有的,可靠的,并且它已经被包含在默认的python发行版中很长一段时间了。

答案 8 :(得分:0)

鼻子似乎是灵活性和便利性的最佳组合。它从一个框架运行单元测试,doctests,覆盖(带扩展)和类似py.test的测试,并且令人钦佩。它有足够的受欢迎程度,它已经为Komodo Edit完成了一些IDE集成,我也不会惊讶地看到它在其他地方。

我喜欢它的原因有一个:在我在另一个框架中编写更广泛的测试之前,我几乎总是doctest。这是因为,对于基础测试,doctests一石二鸟。您可以获得可执行测试(尽管有时候写得有点笨拙)以及API文档和交互式文档。当您使用命令行选项(--with-doctest)时,nose将使用捆绑的doctest扩展名运行它们。

我说这是来自py.test作为我以前的最爱。虽然它很棒,鼻子测试对我来说足够相似,我不会错过它,我喜欢将各种测试方法集成在一个屋檐下,可以这么说。 YMMV,但我建议在选择另一个之前先仔细看看鼻子。如果你不熟悉py.test测试,你也应该看看它们。我发现它们非常棒,因为它们通常以这样的方式编写,即它们可以在没有测试框架的情况下轻松调试,这使得调试会话中涉及一个不那么棘手的系统。我发现这一点非常宝贵,而我认为它们比单元测试更容易编写。