在Python中编写unit testing:我如何开始?

我用Python完成了我的第一个正确的项目,现在我的任务是为它编写testing。

由于这是我第一次做项目,这是我第一次为它写testing。

问题是,我该如何开始? 我完全不知道。 任何人都可以指向我一些文档/教程/链接/书籍,我可以用它来开始写testing(我猜尤其是unit testing)

任何build议都会受到欢迎。

这是Python中testing驱动开发的教程 。 现在,就像Justin说的那样,最好在编码之前或者编码期间编写testing,这就是本教程假定你正在工作的方式,但是我仍然认为你会发现它很有帮助。

这里是第2部分 。

免费的Python书Dive Into Python有一个unit testing的章节 ,你可能会觉得有用。

如果你遵循现代的做法,你应该在写作你的项目时写下testing,而不是等到你的项目快完成了。

现在晚了,但现在你知道下一次了。 🙂

如果你是全新使用unittests,最简单的学习方法往往是最好的。 在此基础上,我推荐使用py.test而不是默认的unittest模块。

考虑这两个例子,它们做同样的事情:

例1:

 import unittest class LearningCase(unittest.TestCase): def test_starting_out(self): self.assertEqual(1, 1) def main(): unittest.main() if __name__ == "__main__": main() 

例2:

 def test_starting_out(): assert 1 == 1 

假设这两个文件都被命名为test_unittesting.py ,我们如何运行testing?

例1

 $ cd /path/to/dir/ $ python test_unittesting.py 

例2:

 $ cd /path/to/dir/ $ py.test 

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

此外,现在已经有点晚了,但是在将来请考虑在项目本身之前或期间编写unit testing。 这样,你可以使用它们来testing,并且(在理论上)你可以使用它们作为回归testing,来validation你的代码更改没有破坏任何现有的代码。 这会给你写testing用例的全部好处:)

在我看来,有三个很棒的pythontesting框架是很好的检查。
unittest – 模块标准的所有python分布
鼻子 – 可以运行unit testing,并且具有较less的样板。
pytest – 也运行unittesttesting,具有较less的样板,更好的报告,很多很酷的额外function

要比较所有这些,请阅读http://pythontesting.net/start-here上的介绍。;
还有一些关于装置的文章,还有更多。

unit testing来自标准库,但我会build议你testing一下。

鼻子扩展unit testing,使testing更容易”。

我也会推荐你pylint

分析Python源代码寻找错误和质量差的迹象 ”。

正如其他人已经回答,编写unit testing已经晚了,但还不算太晚。 问题是你的代码是否可testing 。 事实上,将现有的代码进行testing并不容易,甚至还有一本关于这一点的书: 有效地使用遗留代码 (请参阅关键点或前导PDF )。

现在写unit testing是你的电话。 你只需要意识到这可能是一个乏味的任务。 您可能需要解决这个问题以学习unit testing,或者考虑先编写接受(end-to-end)testing,然后在更改代码或向项目中添加新function时开始编写unit testing。

nosetests是pythonunit testing的绝妙解决scheme。 它支持基于unit testing的testing用例和文档testing,并且可以使用简单的configuration文件开始。