在Python中编写单元测试:我该如何开始?
我完成了我的第一个正式的Python项目,现在我的任务是为它写测试。
因为这是我第一次做项目,所以也是我第一次为它写测试。
我的问题是,我该怎么开始呢?我完全没有头绪。有没有人能给我推荐一些文档、教程、链接或者书籍,让我可以开始写测试(我想特别是单元测试)?
关于这个话题,任何建议都非常欢迎。
7 个回答
46
在我看来,有三个非常不错的Python测试框架,值得大家了解一下:
- unittest - 这个模块是所有Python版本自带的。
- nose - 这个框架可以运行unittest的测试,而且代码写起来更简单。
- pytest - 这个也能运行unittest的测试,代码更简洁,报告功能更强大,还有很多很酷的额外功能。
想要对这几个框架有个全面的比较,可以去看看它们的介绍,网址是Start Here - Python Testing。那里还有关于测试环境和更多内容的详细文章。
74
这本免费的Python书《Dive Into Python》里有一章专门讲单元测试,你可能会觉得很有用。
如果你想跟上现代的编程习惯,最好是在写项目的同时就写测试,而不是等到项目快完成的时候再去写。
现在说这个有点晚了,不过你下次就知道了。:)
118
如果你刚开始接触单元测试,最简单的方法通常是最好的。因此,我建议你使用 py.test
,而不是 默认的 unittest
模块。
看看这两个例子,它们做的是同样的事情:
例子 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