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技术站