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

Writing unit tests in Python: How do I start?

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

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

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

关于这个问题,我们欢迎任何建议。


如果你刚开始使用单元测试,最简单的学习方法往往是最好的。在此基础上,我建议使用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


免费的python书深入到python中有一章是关于单元测试的,您可能会发现这一章很有用。

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

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


在我看来,有三个伟大的Python测试框架可以很好地检查。UnitTest-模块是所有python发行版的标准配置鼻-可以运行单元测试,并有较少的样板。pytest——也运行unittest测试,有更少的样板文件,更好的报告,很多很酷的额外功能。

为了更好地比较所有这些,请阅读http://pythontesting.net/start-here上的介绍。在固定装置上还有一些扩展的物品,还有更多。


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

另外,现在有点晚了,但是将来请考虑在项目之前或期间编写单元测试。这样,您可以在进行测试时使用它们,并且(理论上)可以将它们用作回归测试,以验证您的代码更改没有破坏任何现有代码。这将使您充分受益于编写测试用例:)


UnitTest附带标准库,但我建议您进行鼻测试。

"鼻延伸UnitTest以使测试更容易。"

我也会推荐你皮林特

"分析python源代码,寻找错误和质量不佳的迹象。"


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

现在编写单元测试或者不编写单元测试是您的职责。你只需要知道这可能是一个乏味的任务。您可以处理这个问题来学习单元测试,或者先考虑编写验收(端到端)测试,然后在更改代码或向项目添加新特性时开始编写单元测试。


鼻测试是在Python中进行单元测试的出色解决方案。它既支持基于UnitTest的测试用例,也支持Doctests,并且只使用简单的配置文件就可以开始使用它。