zoukankan      html  css  js  c++  java
  • pytest十四:doctest 框架

    doctest 从字面意思上看,那就是文档测试。doctest 是 python里面自带的一个模块,它实际上是单元测试的一种。

    官方解释:doctest 模块会搜索那些看起来像交互式会话的 Python 代码片段,然后尝试执行并验证结果
    doctest 测试用例可以放在两个地方
    函数戒者方法下的注释里面
    模块的开头

    案例
    先看第一个案例,将需要测试的片段,标准格式,需要运行的代码前面加>>> ,相当于进入 cmd 这种交互环境执行,期望的结果前面不需要加>>>

     

     

    运行结果
    Trying:
    multiply(4, 3)
    Expecting:
    12
    ok
    Trying:
    multiply('a', 3)
    Expecting:
    'aaa'
    ok
    1 items had no tests:
    __main__

    1 items passed all tests:
    2 tests in __main__.multiply
    2 tests in 2 items.
    2 passed and 0 failed.
    Test passed.
    从运行的结果可以看出,虽然函数下方的注释里面有其它内容“fuction: 两个数相乘”,但不会去执行,只识别“>>>”这种符号。
    2 个测试用例都是通过的,实际的结果与期望的结果一致。
    def mutiply(a, b):
    '''
    fuction: 两个数相乘
    >>> mutiply(4, 3)
    12
    >>> mutiply('a', 3)
    'aaa'
    '''
    return a * b

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


    失败案例
    doctest 的内容放到.py 模块的开头也是可以识别到的

    '''
    fuction: 两个数相乘
    >>> mutiply(4, 8)
    12
    >>> mutiply('a', 5)
    'aaa'
    '''
    def mutiply(a, b):
    '''
    fuction: 两个数相乘
    '''
    return a * b

    if __name__=='__main__':
    import doctest
    doctest.testmod(verbose=True)
    verbose 参数,设置为 True 则在执行测试的时候会输出详细信息


    cmd 执行
    以上案例是在编辑器直接运行的,如果在 cmd 里面,也可以用指令去执行
    > python -m doctest -v xxx.py
    m 参数指定运行方式 doctest
    -v 参数是 verbose,带上-v 参数相当于 verbose=True
    
    
    pytest 运行
    pytest 框架是可以兼容 doctest 用例,执行的时候加个参数 —doctest-modules ,这样它就能自动搜索到 doctest 的用例
    > pytest -v --doctest-modules xxx.py
    文档里面的每一行都会被执行,当遇到测试不通过的用例时,就不会继续往下执行了




    doctest 独立文件

     


    doctest 内容也可以呾代码抽离开,单独用一个.txt 文件保存
    在当前 xxx.py 同一目录新建一个 xxx.txt 文件,写入测试的文档,要先导入该功能,导入代码前面也要加>>>
    >>> from xxx import multiply
    >>> multiply(4, 3)
    12
    >>> multiply('a', 3)
    'aaa'
    cmd 执行“python -m doctest -v xxx.txt”测试结果
    
    
  • 相关阅读:
    跟我学SharePoint 2013视频培训课程——什么是SharePoint 2013(1)
    SharePoint 关于拓扑错误的解决方案
    SharePoint 2010、2013多个域之间互信(Domain Trust)的设计与实施
    SharePoint 2013 Disaster Recovery——迁移内容数据库
    windows-根据进程PID 获取进程路径
    kernel 获取ntoskrnl.exe基址
    ring3 x32挂起进程注入原理.
    CryEntryBuffer
    windows内核代码之进程操作
    驱动中遍历模块,以及获取ntoskrnl.exe基址
  • 原文地址:https://www.cnblogs.com/zhongyehai/p/9690515.html
Copyright © 2011-2022 走看看