用Python编写单元测试:如何开始?

用Python编写单元测试:如何开始?,python,unit-testing,testing,Python,Unit Testing,Testing,我用Python完成了第一个合适的项目,现在我的任务是为它编写测试 因为这是我第一次做一个项目,这是我第一次为它编写测试 问题是,我如何开始?我完全不知道。有人能给我指一些文档/教程/链接/书籍吗?我可以用它们来开始编写测试(尤其是单元测试) 欢迎就这一主题提供任何建议 的文档将是一个很好的开始 也是,现在有点晚了,但是将来请考虑在项目本身之前或期间编写单元测试。这样,您就可以在进行测试时使用它们,并且(理论上)可以将它们用作回归测试,以验证您的代码更改没有破坏任何现有代码。这将为您提供编写测试

我用Python完成了第一个合适的项目,现在我的任务是为它编写测试

因为这是我第一次做一个项目,这是我第一次为它编写测试

问题是,我如何开始?我完全不知道。有人能给我指一些文档/教程/链接/书籍吗?我可以用它们来开始编写测试(尤其是单元测试)

欢迎就这一主题提供任何建议

的文档将是一个很好的开始

也是,现在有点晚了,但是将来请考虑在项目本身之前或期间编写单元测试。这样,您就可以在进行测试时使用它们,并且(理论上)可以将它们用作回归测试,以验证您的代码更改没有破坏任何现有代码。这将为您提供编写测试用例的全部好处:)

免费的Python书籍提供了一个您可能会发现很有用的方法

如果您遵循现代实践,那么您可能应该在编写项目时编写测试,而不是等到项目即将完成


现在有点晚了,但现在你知道下次了。:)

如果您是使用单元测试的新手,最简单的学习方法往往是最好的。在此基础上,我建议使用而不是使用

考虑以下两个例子,它们的作用相同:

示例1(单元测试):

导入单元测试
类LearningCase(unittest.TestCase):
def测试启动(自):
self.assertEqual(1,1)
def main():
unittest.main()
如果名称=“\uuuuu main\uuuuuuuu”:
main()
示例2(pytest):

def test_start_out():
断言1==1
假设两个文件都命名为
test\u unittesting.py
,我们如何运行测试

示例1(单元测试):

cd/path/to/dir/
python test_unittesting.py
示例2(pytest):

cd/path/to/dir/
py试验

正如其他人已经回答的那样,编写单元测试已经晚了,但还不算太晚。问题是您的代码是否可测试。事实上,对现有代码进行测试并不容易,甚至有一本关于这方面的书:(参见或)


现在,编写单元测试与否取决于您的决定。你只需要意识到这可能是一项乏味的任务。您可以先学习单元测试,或者首先考虑编写验收(端到端)测试,然后在更改代码或向项目中添加新特性时开始编写单元测试。p> nosetests是Python中单元测试的优秀解决方案。它支持基于单元测试的测试用例和doctest,并且只需一个简单的配置文件就可以让您开始使用它。

unittest随标准库提供,但我建议您使用

“nose扩展了unittest,使测试更容易。”

我还向您推荐


“分析Python源代码,寻找bug和低质量的迹象。”

在我看来,有三个很好的Python测试框架:

  • -模块是所有Python发行版的标准配置
  • -可以运行unittest测试,并且具有较少的样板文件
  • -还运行unittest测试,具有较少的样板文件、更好的报告和许多很酷的额外功能
为了更好地比较所有这些,请通读每个站点的介绍。
还有关于夹具的扩展文章,还有更多。

+1用于“有效地使用遗留代码”。这都是关于没有测试的代码。你的nosetests链接已经过时了。新位置似乎是:nose.readthedocs.org/en/latestAs根据github和nosetest网站上的文档,
nose
nos2
处于维护模式。最好从
py.test开始,因为它有更多的支持。如果你愿意的话,编写测试永远不会太迟。对于所有的抱怨,有一些总比没有好…这里有一本很好的测试驱动开发的书,在线免费出版:我偶然发现的好资源。作为python的新手,我觉得这是可以理解的。python的Hitchhiker指南对单元测试工具有一个简要的概述:前面的评论应该更高,因为该指南还有一个示例代码库,这是一个很好的入门之地,也是。我还是会说,如果你想重构没有单元测试的代码,你应该首先为它编写单元测试。是的,很多第一次参加单元测试的人从老手那里听到了“好吧,对于你当前的项目来说太晚了”这样的话:即使这不是他们真正想说的,这是新手听到的。这就像中国有句关于种树的谚语:开始测试的最佳时间是在项目开始时;第二个最好的开始测试的时间是现在!跳入Python链接已断开…:-(如果你想要测试驱动的开发,这不是一件坏事。在我的例子中,我正在查看现有代码,并试图通过编写和调整测试来理解它,这让我开始了
unittest
。一旦我掌握了窍门,我将更多地使用它进行开发,并增加测试c的数量我听说py.test在很多地方都很简单(,)如果
py.test
nose
以更简单的界面提供相同的功能,为什么
unittest
仍然包含在标准库中?它只是为了提供向后兼容性,还是
unittest
具有
py.test
nosetest
无法提供的一些优势?@alpha_989标准python库并不打算包含可用的最佳工具。这就是PyPI的用途。标准的
unittest
包仍然足够好。它是标准的