如何为方法生成单元测试代码
我想写一些代码来进行单元测试,以测试我的应用程序代码。我有不同的方法,现在想在 Python 脚本中一个一个地测试这些方法。可是我不知道该怎么写。有没有人能给我一个关于 Python 单元测试的小代码示例?我非常感谢。
3 个回答
1
这里有一个示例,你可能还想多了解一下Python的单元测试。
4
我们可以先从给出的 unittest
示例开始。这里有一些标准的最佳实践:
- 把所有的测试放在项目根目录下的一个
tests
文件夹里。 - 每个你要测试的 Python 模块,写一个对应的测试模块。
- 测试模块的名字要以
test
开头。 - 测试方法的名字也要以
test
开头。
当你对 unittest
熟悉后(这应该不会花太长时间),还有一些很不错的扩展可以让你的测试管理起来更轻松,尤其是当测试数量和范围增加时:
- nose -- 可以轻松找到并运行你所有的测试,还有更多功能。
- testoob -- 提供彩色输出(还有其他功能,但这就是我使用它的原因)。
- pythoscope -- 我还没试过,但这个工具可以自动为你的应用生成(失败的)测试代码,应该能节省很多写重复代码的时间。
7
阅读一下单元测试框架部分,这是Python库参考手册中的内容。
这里有一个来自文档的基本示例:
import random
import unittest
class TestSequenceFunctions(unittest.TestCase):
def setUp(self):
self.seq = range(10)
def testshuffle(self):
# make sure the shuffled sequence does not lose any elements
random.shuffle(self.seq)
self.seq.sort()
self.assertEqual(self.seq, range(10))
def testchoice(self):
element = random.choice(self.seq)
self.assert_(element in self.seq)
def testsample(self):
self.assertRaises(ValueError, random.sample, self.seq, 20)
for element in random.sample(self.seq, 5):
self.assert_(element in self.seq)
if __name__ == '__main__':
unittest.main()