python 测试框架_Python 各种测试框架简介(一):doctest
doctest 是一个 Python 发行版自带的标准模块。本篇将分别对使用 doctest 的两种方式——嵌入到源代码中和做成独立文件做基本介绍。
##doctest 的概念模型
在 Python 的官方文档中,对 doctest 的介绍是这样的:
doctest 模块会搜索那些看起来像交互式会话的 Python 代码片段,然后尝试执行并验证结果
即使从没接触过 doctest,我们也可以从这个名字中窥到一丝端倪。“它看起来就像代码里的文档字符串(docstring)一样” 如果你这么想的话,就已经对了一半了。
doctest 的编写过程就仿佛你真的在一个交互式 shell(比如 idle)中导入了要测试的模块,然后开始一条条地测试模块里的函数一样。实际上有很多人也是这么做的,他们写好一个模块后,就在 shell 里挨个测试函数,最后把 shell 会话复制粘贴成 doctest 用例。
##举个例子
下面使用的例子是一个只有一个函数的模块,其中签入了两个 doctest 的测试用例。
unnecessary_math.py:
lang:python
"""
这里也可以写
"""
def multiply(a,b):
"""
>>> multiply(2,3)
6
>>> multiply('baka~',3)
'baka~baka~baka~'
"""
return a*b
if __name__ == '__main__':
import doctest
doctest.testmod(verbose=True)
注意测试代码的位置,前面说过 doctest 的测试用例就像文档字符串一样,这句话的内涵在于:测试用例的位置必须放在整个模块文件的开头,或者紧接着对象声明语句的下一行。也就是可以被 __doc__ 这个属性引用到的地方。并非像普通注释一样写在哪里都可以。另:verbose 参数用于控制是否输出详细信息,默认为 False,如果不写,那么运行时不会输出任何东西,除非测试 fail。
示例的运行输出为:
Trying:
multiply(2,3)
Expecting:
6
ok
Trying:
multiply('baka~',3)
Expecting:
'baka~baka~baka~'
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.
上例中启动测试的方式是在 __main__ 函数里调用了 doctest.testmod() 函数。这对于纯容器型模块文件来说是一个好办法——正常使用时只做导入用,直接运行文件则进行测试。而对于 __main__ 函数另有他用的情况,则还可以通过命令行来启动测试:
$ python -m doctest unnecessary_math.py
$ python -m doctest -v unnecessary_math.py
这里 -m 表示引用一个模块,-v 等价于 verbose=True。运行输出与上面基本一样。
##独立文件模式
如果不想(或不能)把测试用例写进源代码里,则还可以使用一个独立的文本文件来保存测试用例。
lang:python
可选的一些解释性内容...
>>> from test import multiply
>>> multiply(2,3)
6
>>> multiply('baka~',3)
'baka~baka~baka~'
几乎同样的格式。运行方法可以分为在 Python shell 里运行或者在系统 shell 里运行:
lang:python
>>> import doctest
>>> doctest.testfile('example.txt')
bash/cmd.exe:
$ python -m doctest -v example.txt
python 测试框架_Python 各种测试框架简介(一):doctest相关推荐
- python api测试框架_python api 测试框架
python常用框架 Django: Python Web应用开发框架 Django 应该是最出名的Python框架,GAE甚至Erlang都有框架受它影响.Django是走大而全的方向,它最出名的是 ...
- python做性能测试框架_python api 测试框架
python常用框架 Django: Python Web应用开发框架 Django 应该是最出名的Python框架,GAE甚至Erlang都有框架受它影响.Django是走大而全的方向,它最出名的是 ...
- python 微服务框架_Python微服务框架NameKo 性能体验
Nameko是Python下的一个微服务框架,小巧简洁,通过RabbitMq消息组件来实现RPC服务 Github:NameKo 一.准备工作 1.RabbitMq 使用docker安装 docker ...
- python selenium框架_python+selenium之框架设计
一.自动化测试框架 1.什么是自动化测试框架 简单来说,自动化测试框架就是由一些标准,协议,规则组成,提供脚本运行的环境.自动化测试框架能够提供很多便利给用户高效完成一些事情,例如,结构清晰开发脚本, ...
- python中scrapy框架_python的scrapy框架
scrapy是python中数据抓取的框架.简单的逻辑如下所示 scrapy的结构如图所示,包括scrapy engine.scheduler.downloader.spider.item pipel ...
- python流行的爬虫框架_Python爬虫相关框架
Python爬虫相关框架,Python的爬虫框架就是一些爬虫项目的半成品.比如我们可以将一些常见爬虫功能的实现代码写好,然后留下一些接口,在做不同的爬虫项目时,我们只需要根据实际情况,只需要写少量需要 ...
- python企业级框架_Python六大开源框架对比:Web2py略胜一筹
Python是一门动态.面向对象语言.其最初就是作为一门面向对象语言设计的,并且在后期又加入了一些更高级的特性.除了语言本身的设计目的之外,Python标准库也是值得大家称赞的,Python甚至还自带 ...
- python企业级框架_Python六大开源框架对比:Web2py略胜一筹(转)
Python是一门动态.面向对象语言.其最初就是作为一门面向对象语言设计的,并且在后期又加入了一些更高级的特性.除了语言本身的设计目的之外,Python标准库也是值得大家称赞的,Python甚至还自带 ...
- python 渗透框架_Python渗透测试框架:PytheM
PytheM是一个Python渗透测试框架.它只能在osnGNU/Linux OS系统上运行. 安装$sudo apt-get update $sudo apt-get install libasou ...
- python自动化测试登录_Python selenium自动化测试框架入门实战--登录测试案例
本文为Python自动化测试框架基础入门篇,主要帮助会写基本selenium测试代码又没有规划的同仁. 本文应用到POM模型.selenium.unittest框架.configparser配置文件. ...
最新文章
- Python使用tsne进行高维数据可视化实战:二维可视化、三维可视化
- []int 能转换为 []interface 吗?
- Springboot项目搭建(三)整合thymeleaf模板
- 【转】GitHub 从单机到联机:玩转 Pull Request
- html默认下面,阅读下面配置web默认页面index.html的代码 index.html 下面选项中,说法正确的是() (多选)...
- java怎么将程序保存在桌面_在Java桌面应用程序中保留数据的最佳方法是什么?...
- 数据分析不能挣钱、不能给公司创造利润,那要你有什么用?
- APK反编译之二:工具介绍
- 使用wininet的InternetReadFile下载文件
- 鸿蒙系统安装电视家,华为荣耀智慧屏系统更新,支持安装第三方APP,网友:华为妥协了...
- 计划了近半年的跳槽,最终是面试四家,过3家……
- MVC中局部视图的使用
- PDF处理技巧分享之PDF合并:一键实现几个PDF合并成一个PDF
- 谁不想拥有自己的代码仓库?
- 消费者需求研究能够解决什么问题
- 浅谈机器学习-回归与分类的区别
- Excel 2010 VBA 入门 110 获取最小值的自定义函数
- 华为入局商用市场:趋势使然,挑战颇多
- 支付宝扫码到银行卡的收款码(隐藏卡号)静态+动态 制作教程分享
- asp.net夜话之九:验证控件
热门文章
- Java List集合实现倒倒序排列
- JEE5标准与Struts/Spring/Hibernate等诸多开源框架的比较分析
- 51nod1355 斐波那契的最小公倍数
- 织梦自定义表单限制IP24小时只能提交一次方法
- mysql建外键失败
- IOS 打包后安装崩溃,debug正常运行
- 在ASP.NET中使用ObjectDataSource数据控件和GridView显示数据(2)
- [导入]关于中文文本的截取
- Office web component learning ---- Spreadsheet learning
- 原码、反码、补码解析及其简单转化