• python基础教程学习笔记十六


    测试

    测试工具:

    Unitest 通用测试框架

    示例代码如下:

    #unittest框架的简单测试

    import unittest,my_math

     

    class PrductTestCase(unittest.TestCase):

     

        def testIntegers(self):

            for x in range(-10,10):

                for y in range(-10,10):

                    p=my_math.product(x,y)

                    self.assertTrue(p==x*y,'Integer multiplication failed')

     

        def testFloats(self):

            for x in range(-10,10):

                   for y in range(-10,10):

                       x=x/10.0

                       y=y/10.0

                       p=my_math.product(x,y)

                       self.assertTrue(p==x*y,'Float multiplication failed')

     

    if __name__=='__main__':

        unittest.main()

     

    测试正确结果如下:

    ..

    ----------------------------------------------------------------------

    Ran 2 tests in 0.004s

     

    OK

    Traceback (most recent call last):

      File "D:/workspace_python/unittest/unit_test.py", line 21, in <module>

        unittest.main()

      File "D:Python32libunittestmain.py", line 124, in __init__

        self.runTests()

      File "D:Python32libunittestmain.py", line 272, in runTests

        sys.exit(not self.result.wasSuccessful())

    SystemExit: False

     

    测试错误结果如下:

    FF

    ======================================================================

    FAIL: testFloats (__main__.PrductTestCase)

    ----------------------------------------------------------------------

    Traceback (most recent call last):

      File "D:/workspace_python/unittest/unit_test.py", line 18, in testFloats

        self.assertTrue(p==x*y,'Float multiplication failed')

    AssertionError: False is not true : Float multiplication failed

     

    ======================================================================

    FAIL: testIntegers (__main__.PrductTestCase)

    ----------------------------------------------------------------------

    Traceback (most recent call last):

      File "D:/workspace_python/unittest/unit_test.py", line 10, in testIntegers

        self.assertTrue(p==x*y,'Integer multiplication failed')

    AssertionError: False is not true : Integer multiplication failed

     

    ----------------------------------------------------------------------

    Ran 2 tests in 0.007s

     

    FAILED (failures=2)

    Traceback (most recent call last):

      File "D:/workspace_python/unittest/unit_test.py", line 21, in <module>

        unittest.main()

      File "D:Python32libunittestmain.py", line 124, in __init__

        self.runTests()

      File "D:Python32libunittestmain.py", line 272, in runTests

        sys.exit(not self.result.wasSuccessful())

    SystemExit: True

    >>>

     

    常用的testCase方法

    Assert_() 表示假则为失败

    failUnless()

    assertEqual()

    failUnlessEqual()

    assertNotEqual()

    failIfEqual()

    assertAlmostEqual(0

     

     

    单元测试以外的内容

    使用pyCheckerPyLint检查源代码

    分析

     

     

    Doctest 检查文档

    示例代码如下:

    #如果要测试my_python.py,可以在最后添加

    #求数字的平方

    def square(x):

        '''

        Aquare a number and returns the result.

        >>> square(2)

        4

        >>> square(3)

        9

        '''

        return x*x

    if __name__=='__main__':

        import doctest,my_math

        doctest.testmod(my_math)

    在命令行运行时可以设定脚本

    Python my_python -v

     

    显示结果如下:

    D:workspace_pythonunittest>ls

    __pycache__  my_math.py  unit_test.py

     

    D:workspace_pythonunittest>python my_math.py -v

    Trying:

        square(2)

    Expecting:

        4

    ok

    Trying:

        square(3)

    Expecting:

        9

    ok

    1 items had no tests:

        my_math

    1 items passed all tests:

       2 tests in my_math.square

    2 tests in 2 items.

    2 passed and 0 failed.

    Test passed.

     

    如果在文档注释中少写了一个2

    运行时显示结果如下:

    Trying:

        square()

    Expecting:

        4

    **********************************************************************

    File "D:workspace_pythonunittestmy_math.py", line 5, in my_math.square

    Failed example:

        square()

    Exception raised:

        Traceback (most recent call last):

          File "D:Python32libdoctest.py", line 1288, in __run

            compileflags, 1), test.globs)

          File "<doctest my_math.square[0]>", line 1, in <module>

            square()

        TypeError: square() takes exactly 1 argument (0 given)

    Trying:

        square(3)

    Expecting:

        9

    ok

    1 items had no tests:

        my_math

    **********************************************************************

    1 items had failures:

       1 of   2 in my_math.square

    2 tests in 2 items.

    1 passed and 1 failed.

    ***Test Failed*** 1 failures.

  • 相关阅读:
    Delphi Try Except 实例
    如何有效地让一个“ParentFont = False”子控件使用与父母相同的字体名称?
    WPF的本质:数据和行为
    WPF-触发器
    WPF TextBox 验证输入
    wpf数据绑定更新通知
    asp.net *.ashx类型的文件使用说明
    asp.net 定时间点执行任务的简易解决办法
    asp.net 页面延时五秒,跳转到另外的页面
    Asp.net 基于Cookie简易的权限判断
  • 原文地址:https://www.cnblogs.com/retacn-yue/p/6194195.html
Copyright © 2020-2023  润新知