对Python测试套件进行介绍分析

开发 后端
下面文章介绍下什么是Python测试套件,其中在Python测试套件中包含 docfile 和 doctest这两项子套件,希望本文能教会大家许多知识。

Python测试套件具有脚本语言中最丰富和强大的类库,足以支持绝大多数日常应用。它的名字来源于一个喜剧,也许最初设计Python这种语言的人并没有想到今天Python会在工业和科研上获得如此广泛的使用。

在比较长的文档中,由三个大于号组成的 Python 提示符 >>> 是一个非常明显的标志,它表示在 Python 提示上应该发生什么。正如在本系列的***篇文章中看到的,这可以出现在作为文档的单独的文本文件中:

  1. Doctest for truth and falsehood  
  2. -------------------------------  
  3.  
  4. The truth values in Python, named "True" and "False",  
  5. are equivalent to the Boolean numbers one and zero.  
  6.  
  7. >>> True == 1  
  8. True  
  9. >>> False == 0  
  10. True 

这种说明还可以出现在源代码中模块、类或函数的 docstring 中:

  1. def count_vowels(s):  
  2.     """Count the number of vowels in a string.  
  3.  
  4.     >>> count_vowels('aardvark')  
  5.     3  
  6.     >>> count_vowels('THX')  
  7.     0  
  8.  
  9.     """  
  10.     return len( c for c in s if c in 'aeiou') 

当这些测试出现在文本文件中时(比如***个示例),文件就被称为 docfile。当它们出现在 Python 源代码中的 docstring 中时(比如第二个示例),它们就被称为 doctest。因为 docfile 和 doctest 是编写作为测试使用的文档的常用方法(而且这也能够表明文档什么时候过时了),所以 py.test 和 nose 直接支持它们。

(zope.testing 的用户必须使用标准 doctest 模块中的 DocTestSuite 类为每个文件手工创建 Python 测试用例)。与用于寻找测试模块的规则一样,py.test 框架采用固定的过程支持 doctest,无法进行配置,这在项目之间实现标准化,但是限制了项目的灵活性。

如果启用了它的Python测试套件,它就会在所有 Python 模块(包括模块名中不包含 test 的模块)的文档字符串中以及以 test_ 开头和以 .txt 扩展名结尾的所有文本文件中寻找 doctest。

如果启用了它的 -p restdoc 插件,那么不但执行 .txt 文件中的所有 doctest,py.test 还要求项目中的每个 .txt 文件都是有效的 Restructured Text 文件。如果它们造成解析错误,py.test 会发出警告。还可以通过命令行选项让这个插件检查文档中指定的 URL,然后生成每个 .txt 文本文件的 HTML 版本。

doctest-tests 是干扰最小的选项,它只要求 nose 在已经检查的测试模块的 docstring 中寻找 doctest。with-doctest 选项的影响比较大。它要求 nose 搜索所有一般模块(不是测试但包含一般代码的模块),寻找并运行它们的 docstring 中的 doctest。#t#

***,--doctest-extension 允许指定文件扩展名(我认识的大多数开发人员选择 .txt、.rst 或 .doctest)。这要求 nose 读取项目中具有指定的扩展名的所有文本文件,运行并检查它找到的所有Python测试套件

尽管 py.test 和 nose 在这方面的特性集非常相似,但是我更喜欢 nose 的方式。我喜欢对所有 Restructured Text 文件使用非标准的 .rst 扩展名,这样就可以让文本编辑器能够识别它们并对它们应用特殊的语法突出显示。

【编辑推荐】

  1. 有关Python系统文件进行介绍指导
  2. 如何正确的使用Python函数
  3. 对Python 构建工具进行详细介绍分析
  4. PythonAndroid浅析Python优势所在
  5. 如何使用Python模块解析配置文件?
责任编辑:chenqingxiang 来源: 网界网
相关推荐

2010-02-03 15:09:13

Python 构建工具

2009-12-17 16:57:35

LTP套件

2010-03-01 18:01:45

Python环境变量

2009-12-08 17:08:13

WCF Service

2011-03-04 09:09:07

BlueJ

2013-05-24 09:25:27

2017-09-26 19:02:09

PythonInstagram数据分析

2010-01-05 13:29:50

JSON对象

2009-12-08 09:21:13

WCF数据量

2009-12-23 11:10:38

ADO.NET状态

2010-05-20 14:42:02

MySQL数据

2018-04-19 15:13:53

javascriptwebpackvue.js

2011-04-14 09:05:07

ExcelMySQL数据

2010-01-28 14:04:35

C++链表

2020-11-30 10:15:00

Python突变测试编程语言

2012-11-01 11:32:23

IBMdw

2012-11-01 11:37:05

JavaScript单元测试测试工具

2020-02-20 10:45:51

Python数据疾病

2021-03-13 17:49:56

网站测试Web程序开发

2010-12-27 09:19:23

点赞
收藏

51CTO技术栈公众号