Python中的单元测试

22

Python是否有兼容标准xUnit风格的单元测试框架?如果有,它是什么,在哪里可以找到,并且质量如何?

9个回答

25

Python有几个测试框架,包括unittestdoctestnose。其中最像xUnit的是unittest,其文档在Python.org上进行了记录。


9

我推荐使用nose

它是最符合Python风格的单元测试框架。测试运行器可以同时运行doctest和unittest,因此您可以自由选择任何测试样式。


链接到 nose 的已经失效。 - pefu

3

有一个非常完整的测试套件testoob。还有xUnit-ie,具有良好的报告选项。


3
考虑使用 py.test。虽然与 NUnit 不完全相同,但非常好用,具有良好的功能,包括测试自动发现以及“观察测试和代码 - 当有更改时重新运行上次失败的测试。一旦所有测试都通过,就切换到在每次有更改时运行所有测试。”选项。

2

@Greg:PyUnit已经作为unittest包含在标准库中。


1

我推荐使用 Nose。

安装相对简单后,您只需在项目文件夹中运行“nosetests”,Nose 就会找到所有测试并运行它们。我还喜欢插件的集合(覆盖率、GAE 等)以及直接从 Python 脚本中调用 Nose 的能力。


0

nose似乎是灵活性和便利性的最佳组合。它可以从一个框架中运行单元测试、文档测试、覆盖率(使用扩展)和类似于py.test的测试,并且表现出色。它足够受欢迎,已经在Komodo Edit上进行了一些IDE集成,我也不会惊讶在其他地方看到它。

我喜欢它的一个强烈原因:我几乎总是在使用其他框架编写更广泛的测试之前进行文档测试。这是因为对于基本测试,文档测试可以一箭双雕。您可以同时获得可执行的测试(尽管有时编写良好有点笨拙)以及API文档和交互式文档。当您使用命令行选项(--with-doctest)时,nose将使用捆绑的doctest扩展来运行这些测试。

我曾经非常喜欢py.test,但现在我更喜欢nose tests。虽然它们很相似,但是我喜欢将各种测试方法集成到一个框架下。当然,你的情况可能不同,但我建议在选择其他测试框架之前好好看看nose。如果你不熟悉py.test测试,也应该去了解一下。我认为它们非常棒,因为它们通常以一种易于调试的方式编写,而无需测试框架,这使得调试会话中涉及的系统更少。我发现这一点非常有价值,同时我认为它们比unittest测试更容易编写。


0

还有PyUnit,这可能是你正在寻找的。


0

我从未使用过xUnit,所以无法告诉您框架在比较中是好还是坏,但这里是我编写的一个脚本,它使用了unittest框架(检查API是否按照预期工作)和doctest(检查我提供的示例是否有效)。

我的唯一问题是检查某些内容是否引发异常有点复杂(您必须传递一个引发异常的函数/lambda,而不仅仅是像框架的其他部分那样的命令本身)。除此之外,它可靠地执行其任务,并且已经包含在默认的Python发行版中相当长的时间。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接