Python中的单元测试

时间:2020-03-05 18:45:36  来源:igfitidea点击:

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

解决方案

回答

Python有几个测试框架,包括" unittest"," doctest"和" nose"。最类似于xUnit的是" unittest",该文件记录在Python.org上。

  • unittest文档
  • doctest文档

回答

有一个testoob是相当完整的测试套件。还有xUnit-ie,并且有一个不错的报告选项

回答

还有PyUnit可能正是我们要寻找的。

回答

@Greg:PyUnit作为" unittest"包含在标准库中

回答

考虑py.test。与NUnit并不完全相似,但是非常好,它具有不错的功能,包括测试自动发现和"在某些更改重新运行上次失败的测试时监视测试和代码。一旦所有测试通过,就切换到运行所有随时进行测试。"选项。

回答

从未使用过xUnit,所以我无法告诉我们这些框架是好是坏,但是这是我编写的一个脚本,它使用unittest框架(检查API是否正常工作)和doctest(检查我给的例子

我唯一的问题是检查引发异常的东西是否有些复杂(我们必须将引发异常的函数/ lambda传递给它,而不是像框架的其余部分一样只是命令本身)。它应该可靠并且已经在默认的python发行版中包含了相当长的一段时间。

回答

我建议鼻子。

它是单元测试框架中最Pythonic的。测试运行器同时运行doctest和unittest,因此我们可以自由使用任何喜欢的测试样式。

回答

我推荐鼻子。

经过合理简单的安装后,我们只需要在项目文件夹中运行" nosetests",Nose会查找并运行所有测试。我也喜欢插件的集合(coverage,GAE等),以及能够直接从我的Python脚本中调用Nose的能力。

回答

鼻子似乎是灵活性和便利性的最佳组合。它从一个框架运行单元测试,文档测试,覆盖率(带有扩展名)和类似py.test的测试,并且效果如此出色。它具有足够的知名度,它已经为Komodo Edit完成了一些IDE集成,如果在其他地方看到它,我也不会感到惊讶。

我之所以喜欢它,有一个很强的理由:我几乎总是先进行doctest,然后再在另一个框架中编写更广泛的测试。这是因为,对于基本测试,文档测试用一块石头杀死了两只鸟。我们可以同时获得可执行测试(尽管有时编写起来有些笨拙),API文档和交互式文档。当我们使用命令行选项(--with-doctest)时,nose将使用捆绑的doctest扩展名运行它们。

我说这是我以前的最爱,来自py.test。虽然很棒,但鼻子测试与我非常相似,我不会错过它,而且我喜欢将各种测试方法学整合到一个屋顶下。 YMMV,但我建议在选择其他鼻子之前先仔细看一下鼻子。如果我们不熟悉py.test测试,则也应该查看它们。我发现它们很棒,因为它们通常以这样的方式编写:无需测试框架即可轻松调试它们,这使调试会话中所涉及的系统不再那么棘手。我认为这是无价的,而我认为它们也比单元测试更容易编写。