我用Python完成了我的第一个正确的项目,现在我的任务是为它编写测试。
由于这是我第一次做项目,这是我第一次为它编写测试。
问题是,我是如何开始的?我完全不知道。任何人都可以给我一些文档/教程/链接/书籍,我可以用它来开始编写测试(我猜特别是单元测试)
欢迎任何有关此主题的建议。
答案 0 :(得分:95)
如果您对使用单元测试不熟悉,最简单的学习方法往往是最好的。在此基础上,我建议使用py.test
而不是the default unittest
module。
考虑这两个例子,它们做同样的事情:
示例1(unittest):
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):
def test_starting_out():
assert 1 == 1
假设两个文件都命名为test_unittesting.py
,我们如何运行测试?
示例1(unittest):
cd /path/to/dir/
python test_unittesting.py
示例2(pytest):
cd /path/to/dir/
py.test
答案 1 :(得分:70)
免费的Python图书Dive Into Python有chapter on unit testing您可能会觉得有用。
如果您遵循现代实践,您应该在编写项目时编写测试,而不是等到项目即将完成。
现在已经很晚了,但现在你知道下次了。 :)
答案 2 :(得分:37)
在我看来,有三个很棒的python测试框架很适合检查 unittest - 模块标配所有python发行版 nose - 可以运行单元测试,并且具有较少的样板 pytest - 还运行单元测试,具有更少的样板,更好的报告,更多很酷的额外功能
为了对所有这些进行比较,请阅读http://pythontesting.net/start-here处的每个介绍 还有关于灯具的更多文章,还有更多。
答案 3 :(得分:34)
unittest的文档将是一个很好的起点。
此外,现在有点晚了,但将来请考虑在项目本身之前或期间编写单元测试。这样你可以使用它们进行测试,并且(理论上)你可以将它们用作回归测试,以验证你的代码更改没有破坏任何现有代码。这将为您提供编写测试用例的全部好处:)
答案 4 :(得分:27)
unittest 附带标准库,但我建议您 nosetests 。
“ nose扩展了unittest,使测试更容易。”
我还建议你 pylint
“分析Python源代码,寻找质量不佳的错误和迹象。”
答案 5 :(得分:8)
正如其他人已经回复的那样,编写单元测试已经很晚了,但也不算太晚。问题是您的代码是否可测试。实际上,要对现有代码进行测试并不容易,甚至还有一本关于此问题的书:Working Effectively with Legacy Code(请参阅key points或precursor PDF)。
现在编写单元测试是否是你的电话。你只需要意识到这可能是一项乏味的任务。您可以解决此问题以学习单元测试或首先考虑编写接受(端到端)测试,并在更改代码或向项目添加新功能时开始编写单元测试。
答案 6 :(得分:3)
nosetests是python中单元测试的绝佳解决方案。它支持基于单元测试的测试用例和doctests,只需简单的配置文件即可开始使用它。