如何为方法生成单元测试代码

3 投票
3 回答
1053 浏览
提问于 2025-04-11 09:29

我想写一些代码来进行单元测试,以测试我的应用程序代码。我有不同的方法,现在想在 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()

撰写回答