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

557 投票
7 回答
264089 浏览
提问于 2025-04-16 02:03

我完成了我的第一个正式的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

撰写回答