Writing unit tests in Python: How do I start?
我在Python中完成了我的第一个适当的项目,现在我的任务是为它编写测试。
因为这是我第一次做项目,所以这是我第一次为它编写测试。
问题是,我该如何开始?我完全不知道。有人能给我指一些文档/教程/链接/书吗?我可以从编写测试开始(尤其是单元测试)。
关于这个问题,我们欢迎任何建议。
- 如果这是你的意图,那么写测试永远不会太迟。抱怨的人总比没有人好…
- 下面是一本免费的测试驱动开发书籍:chimera.labs.oreilly.com/book s/1234000000754/index.html
- 好资源我偶然发现了https://www.jeffknupp.com/blog/2013/12/09/improve your pytho‌&8203;n-understanding-unit‌&8203;-testing/。作为Python的新手,我觉得这是可以理解的。
- 《Python Hitchiker指南》简要概述了用于单元测试的工具:python-guide-pt-br.readthedocs.io/en/latest/writing/tests
- 之前的评论应该被评价得更高,因为指南在github.com/kennethreitz/samplemod上也有一个示例代码存储库,这也是一个很好的开始的地方。
- 使用py.test。nose和nose2处于维护模式。与py.test相比,unittest需要更多的锅炉板代码,py.test比其他框架获得更多的牵引力。
如果你刚开始使用单元测试,最简单的学习方法往往是最好的。在此基础上,我建议使用py.test模块,而不是默认的unittest模块。
考虑这两个例子,它们的作用相同:
例1(单元测试):
1 2 3 4 5 6 7 8 9 10 11
| import unittest
class LearningCase(unittest.TestCase):
def test_starting_out(self):
self.assertEqual(1, 1)
def main():
unittest.main()
if __name__ =="__main__":
main() |
实施例2(Pytest):
1 2
| def test_starting_out():
assert 1 == 1 |
假设两个文件都命名为test_unittesting.py,我们如何运行测试?
例1(单元测试):
1 2
| cd /path/to/dir/
python test_unittesting.py |
实施例2(Pytest):
1 2
| cd /path/to/dir/
py.test |
- 我听说过多个地方py.test的简单性(docs.python-guide.org/en/latest/writing/tests/py-test,docs.python.org/3.5/library/unittest.html module unittest,jeffknupp.com/blog/2013/12/09/…)如果unit-test和nose在标准库中提供相同的功能,为什么unit-test仍然包含在标准库中?界面简单多了?它只是提供向后兼容性,还是unittest具有py.test和nosetest无法提供的一些优势?
- @标准python库并不打算包含可用的最佳工具。这就是皮皮的目的。标准的unittest包仍然足够好。它是标准的,这意味着它一定能很好地工作。最后,任何使用您的代码的人都不需要安装额外的软件包。
免费的python书深入到python中有一章是关于单元测试的,您可能会发现这一章很有用。
如果您遵循现代实践,那么您可能应该在编写项目时编写测试,而不是等到项目接近完成时再编写。
现在有点晚了,但现在你知道下一次了。:)
- 我仍然认为,如果您想要重构没有单元测试的代码,您应该首先为其编写单元测试。
- 是的,很多第一次来UnitTests的人都从老手那里听到了听起来"嗯,对你现在的项目来说有点太晚了"的声音:即使这不是他们真正想说的,那也是新手听到的。就像中国的一句关于植树的谚语:开始测试的最佳时间是在项目的开始;开始测试的第二个最佳时间是现在!
- 潜入python链接被破坏…:
- 潜入python域似乎已经过期,但是web.archive.org拯救了:web.archive.org/web/20171218185744/http://hellip;
在我看来,有三个伟大的Python测试框架可以很好地检查。UnitTest-模块是所有python发行版的标准配置鼻-可以运行单元测试,并有较少的样板。pytest——也运行unittest测试,有更少的样板文件,更好的报告,很多很酷的额外功能。
为了更好地比较所有这些,请阅读http://pythontesting.net/start-here上的介绍。在固定装置上还有一些扩展的物品,还有更多。
UnitTest的文档将是一个很好的开始。
另外,现在有点晚了,但是将来请考虑在项目之前或期间编写单元测试。这样,您可以在进行测试时使用它们,并且(理论上)可以将它们用作回归测试,以验证您的代码更改没有破坏任何现有代码。这将使您充分受益于编写测试用例:)
- 啊!我不知道这是沿着项目进行的。我以后会照顾好的。不过,谢谢你的链接。
- 如果你想要测试驱动的开发,这不是一件坏事。在我的例子中,我正在查看现有的代码,并试图通过编写和调整测试来理解它,这使我开始使用unittest。一旦我掌握了一些技巧,我将更多地使用它进行开发,并增加每个单元的测试用例数量。
UnitTest附带标准库,但我建议您进行鼻测试。
"鼻延伸UnitTest以使测试更容易。"
我也会推荐你皮林特
"分析python源代码,寻找错误和质量不佳的迹象。"
正如其他人已经回答的那样,编写单元测试已经晚了,但也不算太晚。问题是您的代码是否可测试。事实上,对现有代码进行测试并不容易,甚至还有一本关于这方面的书:有效地处理遗留代码(参见要点或前体PDF)。
现在编写单元测试或者不编写单元测试是您的职责。你只需要知道这可能是一个乏味的任务。您可以处理这个问题来学习单元测试,或者先考虑编写验收(端到端)测试,然后在更改代码或向项目添加新特性时开始编写单元测试。
- +1表示"有效地使用旧代码"。这都是关于没有测试的代码。
鼻测试是在Python中进行单元测试的出色解决方案。它既支持基于UnitTest的测试用例,也支持Doctests,并且只使用简单的配置文件就可以开始使用它。
- 您的nosetest链接已过时。新地点似乎是:nose.readthedocs.org/en/latest
- 根据Github和NoseTest网站上的文档,nose和nose2处于维护模式。最好从py.test开始,因为它有更多的支持