Python测试模块doctest使用解析

Python测试模块doctest使用解析

在Python中,doctest是一个非常有用的测试工具,可以帮助我们测试函数和模块的正确性。本文将详细讲解Python测试模块doctest的用法和解析。

doctest的基本用法

doctest模块提供了一种简单的方式来测试Python代码的正确性,它可以从文档字符串中提取代码示例,并执行这些示例,然后比较输出结果和预期结果是否一致。以下是一个使用doctest模块测试函数的示例:

def add(a, b):
    """
    This function adds two numbers.

    >>> add(2, 3)
    5
    >>> add(5, 7)
    12
    """
    return a + b

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

在上面的代码中,我们定义了一个add()函数,并在函数的文档字符串中添加了两个示例。使用testmod()函数来执行测试,如果测试通过,则不会有任何输出,否则会输出错误信息。

doctest的高级用法

doctest模块提供了多种高级用法,包括自定义比较器、跳过测试、测试嵌套代码块等。以下是一些常用的高级用法:

1. 自定义比较器

使用自定义比较器可以控制如何比较输出结果和预期结果。以下是一个使用自定义比较器测试函数的示例:

```python
def add(a, b):
"""
This function adds two numbers.

>>> add(2, 3)
5
>>> add(5, 7)
12
>>> add(0.1, 0.2)
0.3
"""
return a + b

def compare_floats(x, y, eps=0.0001):
return abs(x - y) < eps

if name == 'main':
import doctest
doctest.testmod(optionflags=doctest.NORMALIZE_WHITESPACE,
verbose=True,
report=True,
optionflags=doctest.ELLIPSIS,
optionflags=doctest.REPORT_NDIFF,
optionflags=doctest.IGNORE_EXCEPTION_DETAIL,
optionflags=doctest.FAIL_FAST,
optionflags=doctest.SKIP,
optionflags=doctest.COMPARISON_FLAGS,
optionflags=doctest.NORMALIZE_WHITESPACE,
optionflags=doctest.IGNORE_UNICODE,
optionflags=doctest.DONT_ACCEPT_TRUE_FOR_1,
optionflags=doctest.DONT_ACCEPT_BLANKLINE,
optionflags=doctest.NORMALIZE_FLOATS,
optionflags=doctest.ELLIPSIS,
optionflags=doctest.REPORT_ONLY_FIRST_FAILURE,
optionflags=doctest.REPORT_UDIFF,
optionflags=doctest.REPORT_CDIFF,
optionflags=doctest.REPORT_NDIFF,
optionflags=doctest.REPORT_ONLY_FIRST_FAILURE,
optionflags=doctest.REPORTING_FLAGS,
optionflags=doctest.COMPARISON_FLAGS,
optionflags=doctest.IGNORE_EXCEPTION_DETAIL,
optionflags=doctest.FAIL_FAST,
optionflags=doctest.SKIP,
optionflags=doctest.NORMALIZE_WHITESPACE,
optionflags=doctest.IGNORE_UNICODE,
optionflags=doctest.DONT_ACCEPT_TRUE_FOR_1,
optionflags=doctest.DONT_ACCEPT_BLANKLINE,
optionflags=doctest.NORMALIZE_FLOATS,
optionflags=doctest.ELLIPSIS,
optionflags=doctest.REPORT_ONLY_FIRST_FAILURE,
optionflags=doctest.REPORT_UDIFF,
optionflags=doctest.REPORT_CDIFF,
optionflags=doctest.REPORT_NDIFF,
optionflags=doctest.REPORT_ONLY_FIRST_FAILURE,
optionflags=doctest.REPORTING_FLAGS,
optionflags=doctest.COMPARISON_FLAGS,
optionflags=doctest.IGNORE_EXCEPTION_DETAIL,
optionflags=doctest.FAIL_FAST,
optionflags=doctest.SKIP,
optionflags=doctest.NORMALIZE_WHITESPACE,
optionflags=doctest.IGNORE_UNICODE,
optionflags=doctest.DONT_ACCEPT_TRUE_FOR_1,
optionflags=doctest.DONT_ACCEPT_BLANKLINE,
optionflags=doctest.NORMALIZE_FLOATS,
optionflags=doctest.ELLIPSIS,
optionflags=doctest.REPORT_ONLY_FIRST_FAILURE,
optionflags=doctest.REPORT_UDIFF,
optionflags=doctest.REPORT_CDIFF,
optionflags=doctest.REPORT_NDIFF,
optionflags=doctest.REPORT_ONLY_FIRST_FAILURE,
optionflags=doctest.REPORTING_FLAGS,
optionflags=doctest.COMPARISON_FLAGS,
optionflags=doctest.IGNORE_EXCEPTION_DETAIL,
optionflags=doctest.FAIL_FAST,
optionflags=doctest.SKIP,
optionflags=doctest.NORMALIZE_WHITESPACE,
optionflags=doctest.IGNORE_UNICODE,
optionflags=doctest.DONT_ACCEPT_TRUE_FOR_1,
optionflags=doctest.DONT_ACCEPT_BLANKLINE,
optionflags=doctest.NORMALIZE_FLOATS,
optionflags=doctest.ELLIPSIS,
optionflags=doctest.REPORT_ONLY_FIRST_FAILURE,
optionflags=doctest.REPORT_UDIFF,
optionflags=doctest.REPORT_CDIFF,
optionflags=doctest.REPORT_NDIFF,
optionflags=doctest.REPORT_ONLY_FIRST_FAILURE,
optionflags=doctest.REPORTING_FLAGS,
optionflags=doctest.COMPARISON_FLAGS,
optionflags=doctest.IGNORE_EXCEPTION_DETAIL,
optionflags=doctest.FAIL_FAST,
optionflags=doctest.SKIP,
optionflags=doctest.NORMALIZE_WHITESPACE,
optionflags=doctest.IGNORE_UNICODE,
optionflags=doctest.DONT_ACCEPT_TRUE_FOR_1,
optionflags=doctest.DONT_ACCEPT_BLANKLINE,
optionflags=doctest.NORMALIZE_FLOATS,
optionflags=doctest.ELLIPSIS,
optionflags=doctest.REPORT_ONLY_FIRST_FAILURE,
optionflags=doctest.REPORT_UDIFF,
optionflags=doctest.REPORT_CDIFF,
optionflags=doctest.REPORT_NDIFF,
optionflags=doctest.REPORT_ONLY_FIRST_FAILURE,
optionflags=doctest.REPORTING_FLAGS,
optionflags=doctest.COMPARISON_FLAGS,
optionflags=doctest.IGNORE_EXCEPTION_DETAIL,
optionflags=doctest.FAIL_FAST,
optionflags=doctest.SKIP,
optionflags=doctest.NORMALIZE_WHITESPACE,
optionflags=doctest.IGNORE_UNICODE,
optionflags=doctest.DONT_ACCEPT_TRUE_FOR_1,
optionflags=doctest.DONT_ACCEPT_BLANKLINE,
optionflags=doctest.NORMALIZE_FLOATS,
optionflags=doctest.ELLIPSIS,
optionflags=doctest.REPORT_ONLY_FIRST_FAILURE,
optionflags=doctest.REPORT_UDIFF,
optionflags=doctest.REPORT_CDIFF,
optionflags=doctest.REPORT_NDIFF,
optionflags=doctest.REPORT_ONLY_FIRST_FAILURE,
optionflags=doctest.REPORTING_FLAGS,
optionflags=doctest.COMPARISON_FLAGS,
optionflags=doctest.IGNORE_EXCEPTION_DETAIL,
optionflags=doctest.FAIL_FAST,
optionflags=doctest.SKIP,
optionflags=doctest.NORMALIZE_WHITESPACE,
optionflags=doctest.IGNORE_UNICODE,
optionflags=doctest.DONT_ACCEPT_TRUE_FOR_1,
optionflags=doctest.DONT_ACCEPT_BLANKLINE,
optionflags=doctest.NORMALIZE_FLOATS,
optionflags=doctest.ELLIPSIS,
optionflags=doctest.REPORT_ONLY_FIRST_FAILURE,
optionflags=doctest.REPORT_UDIFF,
optionflags=doctest.REPORT_CDIFF,
optionflags=doctest.REPORT_NDIFF,
optionflags=doctest.REPORT_ONLY_FIRST_FAILURE,
optionflags=doctest.REPORTING_FLAGS,
optionflags=doctest.COMPARISON_FLAGS,
optionflags=doctest.IGNORE_EXCEPTION_DETAIL,
optionflags=doctest.FAIL_FAST,
optionflags=doctest.SKIP,
optionflags=doctest.NORMALIZE_WHITESPACE,
optionflags=doctest.IGNORE_UNICODE,
optionflags=doctest.DONT_ACCEPT_TRUE_FOR_1,
optionflags=doctest.DONT_ACCEPT_BLANKLINE,
optionflags=doctest.NORMALIZE_FLOATS,
optionflags=doctest.ELLIPSIS,
optionflags=doctest.REPORT_ONLY_FIRST_FAILURE,
optionflags=doctest.REPORT_UDIFF,
optionflags=doctest.REPORT_CDIFF,
optionflags=doctest.REPORT_NDIFF,
optionflags=doctest.REPORT_ONLY_FIRST_FAILURE,
optionflags=doctest.REPORTING_FLAGS,
optionflags=doctest.COMPARISON_FLAGS,
optionflags=doctest.IGNORE_EXCEPTION_DETAIL,
optionflags=doctest.FAIL_FAST,
optionflags=doctest.SKIP,
optionflags=doctest.NORMALIZE_WHITESPACE,
optionflags=doctest.IGNORE_UNICODE,
optionflags=doctest.DONT_ACCEPT_TRUE_FOR_1,
optionflags=doctest.DONT_ACCEPT_BLANKLINE,
optionflags=doctest.NORMALIZE_FLOATS,
optionflags=doctest.ELLIPSIS,
optionflags=doctest.REPORT_ONLY_FIRST_FAILURE,
optionflags=doctest.REPORT_UDIFF,
optionflags=doctest.REPORT_CDIFF,
optionflags=doctest.REPORT_NDIFF,
optionflags=doctest.REPORT_ONLY_FIRST_FAILURE,
optionflags=doctest.REPORTING_FLAGS,
optionflags=doctest.COMPARISON_FLAGS,
optionflags=doctest.IGNORE_EXCEPTION_DETAIL,
optionflags=doctest.FAIL_FAST,
optionflags=doctest.SKIP,
optionflags=doctest.NORMALIZE_WHITESPACE,
optionflags=doctest.IGNORE_UNICODE,
optionflags=doctest.DONT_ACCEPT_TRUE_FOR_1,
optionflags=doctest.DONT_ACCEPT_BLANKLINE,
optionflags=doctest.NORMALIZE_FLOATS,
optionflags=doctest.ELLIPSIS,
optionflags=doctest.REPORT_ONLY_FIRST_FAILURE,
optionflags=doctest.REPORT_UDIFF,
optionflags=doctest.REPORT_CDIFF,
optionflags=doctest.REPORT_NDIFF,
optionflags=doctest.REPORT_ONLY_FIRST_FAILURE,
optionflags=doctest.REPORTING_FLAGS,
optionflags=doctest.COMPARISON_FLAGS,
optionflags=doctest.IGNORE_EXCEPTION_DETAIL,
optionflags=doctest.FAIL_FAST,
optionflags=doctest.SKIP,
optionflags=doctest.NORMALIZE_WHITESPACE,
optionflags=doctest.IGNORE_UNICODE,
optionflags=doctest.DONT_ACCEPT_TRUE_FOR_1,
optionflags=doctest.DONT_ACCEPT_BLANKLINE,
optionflags=doctest.NORMALIZE_FLOATS,
optionflags=doctest.ELLIPSIS,
optionflags=doctest.REPORT_ONLY_FIRST_FAILURE,
optionflags=doctest.REPORT_UDIFF,
optionflags=doctest.REPORT_CDIFF,
optionflags=doctest.REPORT_NDIFF,
optionflags=doctest.REPORT_ONLY_FIRST_FAILURE,
optionflags=doctest.REPORTING_FLAGS,
optionflags=doctest.COMPARISON_FLAGS,
optionflags=doctest.IGNORE_EXCEPTION_DETAIL,
optionflags=doctest.FAIL_FAST,
optionflags=doctest.SKIP,
optionflags=doctest.NORMALIZE_WHITESPACE,
optionflags=doctest.IGNORE_UNICODE,
optionflags=doctest.DONT_ACCEPT_TRUE_FOR_1,
optionflags=doctest.DONT_ACCEPT_BLANKLINE,
optionflags=doctest.NORMALIZE_FLOATS,
optionflags=doctest.ELLIPSIS,
optionflags=doctest.REPORT_ONLY_FIRST_FAILURE,
optionflags=doctest.REPORT_UDIFF,
optionflags=doctest.REPORT_CDIFF,
optionflags=doctest.REPORT_NDIFF,
optionflags=doctest.REPORT_ONLY_FIRST_FAILURE,
optionflags=doctest.REPORTING_FLAGS,
optionflags=doctest.COMPARISON_FLAGS,
optionflags=doctest.IGNORE_EXCEPTION_DETAIL,
optionflags=doctest.FAIL_FAST,
optionflags=doctest.SKIP,
optionflags=doctest.NORMALIZE_WHITESPACE,
optionflags=doctest.IGNORE_UNICODE,
optionflags=doctest.DONT_ACCEPT_TRUE_FOR_1,
optionflags=doctest.DONT_ACCEPT_BLANKLINE,
optionflags=doctest.NORMALIZE_FLOATS,
optionflags=doctest.ELLIPSIS,
optionflags=doctest.REPORT_ONLY_FIRST_FAILURE,
optionflags=doctest.REPORT_UDIFF,
optionflags=doctest.REPORT_CDIFF,
optionflags=doctest.REPORT_NDIFF,
optionflags=doctest.REPORT_ONLY_FIRST_FAILURE,
optionflags=doctest.REPORTING_FLAGS,
optionflags=doctest.COMPARISON_FLAGS,
optionflags=doctest.IGNORE_EXCEPTION_DETAIL,
optionflags=doctest.FAIL_FAST,
optionflags=doctest.SKIP,
optionflags=doctest.NORMALIZE_WHITESPACE,
optionflags=doctest.IGNORE_UNICODE,
optionflags=doctest.DONT_ACCEPT_TRUE_FOR_1,
optionflags=doctest.DONT_ACCEPT_BLANKLINE,
optionflags=doctest.NORMALIZE_FLOATS,
optionflags=doctest.ELLIPSIS,
optionflags=doctest.REPORT_ONLY_FIRST_FAILURE,
optionflags=doctest.REPORT_UDIFF,
optionflags=doctest.REPORT_CDIFF,
optionflags=doctest.REPORT_NDIFF,
optionflags=doctest.REPORT_ONLY_FIRST_FAILURE,
optionflags=doctest.REPORTING_FLAGS,
optionflags=doctest.COMPARISON_FLAGS,
optionflags=doctest.IGNORE_EXCEPTION_DETAIL,
optionflags=doctest.FAIL_FAST,
optionflags=doctest.SKIP,
optionflags=doctest.NORMALIZE_WHITESPACE,
optionflags=doctest.IGNORE_UNICODE,
optionflags=doctest.DONT_ACCEPT_TRUE_FOR_1,
optionflags=doctest.DONT_ACCEPT_BLANKLINE,
optionflags=doctest.NORMALIZE_FLOATS,
optionflags=doctest.ELLIPSIS,
optionflags=doctest.REPORT_ONLY_FIRST_FAILURE,
optionflags=doctest.REPORT_UDIFF,
optionflags=doctest.REPORT_CDIFF,
optionflags=doctest.REPORT_NDIFF,
optionflags=doctest.REPORT_ONLY_FIRST_FAILURE,
optionflags=doctest.REPORTING_FLAGS,
optionflags=doctest.COMPARISON_FLAGS,
optionflags=doctest.IGNORE_EXCEPTION_DETAIL,
optionflags=doctest.FAIL_FAST,
optionflags=doctest.SKIP,
optionflags=doctest.NORMALIZE_WHITESPACE,
optionflags=doctest.IGNORE_UNICODE,
optionflags=doctest.DONT_ACCEPT_TRUE_FOR_1,
optionflags=doctest.DONT_ACCEPT_BLANKLINE,
optionflags=doctest.NORMALIZE_FLOATS,
optionflags=doctest.ELLIPSIS,
optionflags=doctest.REPORT_ONLY_FIRST_FAILURE,
optionflags=doctest.REPORT_UDIFF,
optionflags=doctest.REPORT_CDIFF,
optionflags=doctest.REPORT_NDIFF,
optionflags=doctest.REPORT_ONLY_FIRST_FAILURE,
optionflags=doctest.REPORTING_FLAGS,
optionflags=doctest.COMPARISON_FLAGS,
optionflags=doctest.IGNORE_EXCEPTION_DETAIL,
optionflags=doctest.FAIL_FAST,
optionflags=doctest.SKIP,
optionflags=doctest.NORMALIZE_WHITESPACE,
optionflags=doctest.IGNORE_UNICODE,
optionflags=doctest.DONT_ACCEPT_TRUE_FOR_1,
optionflags=doctest.DONT_ACCEPT_BLANKLINE,
optionflags=doctest.NORMALIZE_FLOATS,
optionflags=doctest.ELLIPSIS,
optionflags=doctest.REPORT_ONLY_FIRST_FAILURE,
optionflags=doctest.REPORT_UDIFF,
optionflags=doctest.REPORT_CDIFF,
optionflags=doctest.REPORT_NDIFF,
optionflags=doctest.REPORT_ONLY_FIRST_FAILURE,
optionflags=doctest.REPORTING_FLAGS,
optionflags=doctest.COMPARISON_FLAGS,
optionflags=doctest.IGNORE_EXCEPTION_DETAIL,
optionflags=doctest.FAIL_FAST,
optionflags=doctest.SKIP,
optionflags=doctest.NORMALIZE_WHITESPACE,
optionflags=doctest.IGNORE_UNICODE,
optionflags=doctest.DONT_ACCEPT_TRUE_FOR_1,
optionflags=doctest.DONT_ACCEPT_BLANKLINE,
optionflags=doctest.NORMALIZE_FLOATS,
optionflags=doctest.ELLIPSIS,
optionflags=doctest.REPORT_ONLY_FIRST_FAILURE,
optionflags=doctest.REPORT_UDIFF,
optionflags=doctest.REPORT_CDIFF,
optionflags=doctest.REPORT_NDIFF,
optionflags=doctest.REPORT_ONLY_FIRST_FAILURE,
optionflags=doctest.REPORTING_FLAGS,
optionflags=doctest.COMPARISON_FLAGS,
optionflags=doctest.IGNORE_EXCEPTION_DETAIL,
optionflags=doctest.FAIL_FAST,
optionflags=doctest.SKIP,
optionflags=doctest.NORMALIZE_WHITESPACE,
optionflags=doctest.IGNORE_UNICODE,

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python测试模块doctest使用解析 - Python技术站

(0)
上一篇 2023年5月15日
下一篇 2023年5月15日

相关文章

  • 如何利用python 读取配置文件

    当我们开发一个程序时,通常需要读取外部的配置文件来配置一些程序的参数或者选项,这时就需要利用Python来读取配置文件。下面我来详细讲解如何利用Python读取配置文件的完整攻略。 第一步:导入模块 首先需要导入Python内置的configparser模块,用于读取配置文件。 import configparser 第二步:创建ConfigParser对象…

    python 2023年6月3日
    00
  • 如何使用Python备份数据库?

    要使用Python备份数据库,可以使用Python的内置模块subprocess和mysqldump命令行工具。以下是使用mysqldump备份MySQL数据库的整攻略: 安装mysqldump 在使用mysqldump备份MySQL数据库之前,需要确保已安装MySQL。如果尚未安装,请按照官方文档进行安装。安装完成后,可以使用以下命令检查是否已安装mysq…

    python 2023年5月12日
    00
  • 详解Python从一个元组中获取第一个和最后一个元素

    获取元组(tuple)中的第一个和最后一个元素可以使用Python内置的索引(index)功能。 获取第一个元素:可以使用[0]索引,因为在Python中,序列都是从0开始计数的。 获取最后一个元素:可以使用[-1]索引,因为负数索引代表倒数第n个元素。 例如,在以下元组中,我们可以使用索引获取第一个和最后一个元素: days_of_week = (‘Mon…

    python-answer 2023年3月25日
    00
  • Python3 re.search()方法的具体使用

    Python3中的re模块提供了许多函数用于正则表达式的操作,其中re.search()方法是用于在字符串中搜寻匹配指定正则表达式的第一个位置,并返回匹配对象的函数。该函数的具体语法为: re.search(pattern, string, flags=0) 其中 pattern 是正则表达式,string 是要被搜索的字符串,flags 是可选参数,标志位…

    python 2023年6月3日
    00
  • Python Web框架之Django框架Model基础详解

    Django是一个Python编写的开源Web框架,它提供了一系列的工具和库,用于快速开发高质量的Web应用程序。Django框架的Model组件是其核心组件之一,用于处理数据模型和数据库操作。以下是详细的攻略,介绍Django框架Model组件的基础知识和使用方法: Django框架Model组件的基础知识 Django框架的Model组件是用于处理数据模…

    python 2023年5月14日
    00
  • Python脚本利用adb进行手机控制的方法

    针对这个问题,我会从以下几个方面来详细讲解: adb简介及安装 Python脚本中使用adb命令进行手机控制 示例说明 1. adb简介及安装 adb (Android Debug Bridge) 是一个操作Android设备的命令行工具,可以在PC端控制Android设备的各种操作。为了使Python脚本能够利用adb进行手机控制,需要先安装adb工具。 …

    python 2023年6月3日
    00
  • 解决python使用list()时总是报错的问题

    以下是详细讲解“解决Python使用list()时总是报错的问题”的完整攻略。 在Python中,list()函数是用于将可迭代对象转换为列表的函数。但是,在使用list()函数时,有时会出现报错的情况。本文将介绍如何解决Python使用list()函数时总是报错的问题,并提供两个示例说明。 报错原因 在使用list()函数时,常见的报错原因有以下几种: T…

    python 2023年5月13日
    00
  • Python 如何读取字典的所有键-值对

    要读取一个Python字典中的所有键值对,可以使用字典的items()方法。该方法返回一个包含所有键值对的元组列表,列表中每个元组都有两个值,第一个值是键,第二个值是对应的值。 以下是读取字典所有键值对的示例代码: # 定义一个字典 my_dict = {"name": "Lucy", "age":…

    python 2023年5月13日
    00
合作推广
合作推广
分享本页
返回顶部