zoukankan      html  css  js  c++  java
  • Python单元测试工具doctest和unittest

    Python标准库包含两个测试工具。

    doctest:一个简单的模块,为检查文档而设计,但也适合用来编写单元测试。

    unittest:一个通用的测试框架。

    一、使用doctest进行单元测试

    创建文件mymath.py,内容

    def square(x):
        '''
        计算平方并返回结果(下面是单元测试的格式)
        >>> square(2)
        4
        >>> square(3)
        9
        '''
        return x * x
    
    if __name__ == '__main__':
        import doctest,mymath
        doctest.testmod(mymath)

    在Sublime Text 3中运行只是提示[Finished in 0.2s]。

    在cmd命令下切换到mymath.py所在目录,运行python mymath.py -v后,有提示测试详细信息,测试通过。如下图:

    把函数square里面的return x * x 改成 return x / x。

    再次运行python mymath.py -v,提示测试不通过,如下图:

    二、使用unittest进行单元测试

     还是用mymath.py测试,内容:

    def square(x):    
        return x * x

    新建单元测试文件test_math.py,内容:

    import unittest, mymath
    
    class mathTestCase(unittest.TestCase):    
        
        def test_square(self):        
            self.assertEqual(mymath.square(2), 4)
            self.assertEqual(mymath.square(3), 9)
    
    if __name__ == '__main__':
        unittest.main()

    运行后,显示OK 测试通过。

    .
    ----------------------------------------------------------------------
    Ran 1 test in 0.000s
    
    OK

    把函数square里面的return x * x 改成 return x / x。

    再次运行,这次显示FAILED 测试不通过。

    F
    ======================================================================
    FAIL: test_square (__main__.mathTestCase)
    ----------------------------------------------------------------------
    Traceback (most recent call last):
      File "D:projectspython	est_math.py", line 6, in test_square
        self.assertEqual(mymath.square(2), 4)
    AssertionError: 1.0 != 4
    
    ----------------------------------------------------------------------
    Ran 1 test in 0.000s
    
    FAILED (failures=1)
  • 相关阅读:
    不同类型的磁盘存储在Ubuntu下的性能测试
    Ubuntu16.04编译安装Redis Desktop Manager
    gnu screen的用法
    MySQL Workbench常用快捷键
    Libevent例子(二)
    Libevent例子(一)
    Ubuntu下的init.d管理update-rc.d
    Centos7 修改终端文字显示颜色
    通过socks tunnel设置http代理
    linux:C++的socket编程
  • 原文地址:https://www.cnblogs.com/gdjlc/p/11415567.html
Copyright © 2011-2022 走看看