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