• 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”测试结果
    
    
  • 相关阅读:
    单片机与嵌入式系统中C语言的位运算小记
    #ifndef、#def、#endif说明
    Freertos学习初识任务函数
    IAR(EWARM)下移植FreeRTOS到STM32F10x笔记
    visio 画 弯曲 箭头 ( 波浪线 曲线)
    dos 中tree的使用方法
    Win7下Borland C++ 4.5 & TASM5.0调试uC/OSII
    (*(volatile unsigned long *)
    有关推挽输出、开漏输出、复用开漏输出、复用推挽输出以及上拉输入、下拉输入、浮空输入、模拟输入区别
    POJ 1236 Network of Schools
  • 原文地址:https://www.cnblogs.com/zhongyehai/p/9690515.html
Copyright © 2020-2023  润新知