python的单元测试和文档测试模块

unittest模块

用法炒鸡简单,基本用法如下

#!/usr/bin/env python  
#encoding: utf-8  
import unittest

def sum(x, y):
    return x+y

class TestFunc(unittest.TestCase):
    def setUp(self):
        pass
    def tearDown(self):  
        pass

    def test_sum_3_4(self):
        self.assertEqual(sum(3,4), 7)

    def test_sum_3_4_NE6(self):
        self.assertNotEqual(sum(3,4), 6)

    @unittest.expectedFailure
    def test_sum_3_4_EF(self):
        self.assertEqual(sum(3,4), 6)


if __name__ == '__main__':
    unittest.main()
    1. 首先引入 unittest 模块
    2. 定义 TestCase 类,类的 setUp 和 tearDown 函数按需使用,比如测试的一个类的话,在 setUp 中可实例化出一个被测类供测试函数使用,然后再写一堆 test_xxx 函数即可。
    3. 最后,main 模块中使用 unittest.main() 启动整个测试即可。
    4. 自动寻找文件夹中所有的单元测试文件并执行它python -m unittest discover -s ut_dir

doctest模块

doctest模块主要用于对文档字符串写的用法示例进行测试。

怎么写可以进行doctest的示例代码呢?直接实例吧

#!/usr/bin/env python  
#encoding: utf-8  

def sum( x, y):
    """sum function.
    
    Example:
    >>> sum(3,4)
    7
    """
    return x+y

if __name__ == '__main__':
    import doctest
    doctest.testmod()

直接运行这个py文件,嗯,啥结果也没有看见,那就对了,说明doctest通过了。doctest默认是不显示任何结果的,除非使用-v参数:python myfile.py -v 就可以看到doctest执行过程和结果了。

另外,doctest还提供了unittest API以方便unittest直接把doctest一块执行了。
只需要再测试模块中定义个`load_tests()`函数即可

def load_tests(loader, tests, ignore):
    tests.addTests(doctest.DocTestSuite())
    return tests

这般以后,unittest.main()会把doctest也一块给做了。

发表评论

电子邮件地址不会被公开。 必填项已用*标注