Python单元和文档测试实例详解


Posted in Python onApril 11, 2019

本文实例讲述了Python单元和文档测试。分享给大家供大家参考,具体如下:

单元和文档测试

1、单元测试

单元测试就是用来对一个模块、一个函数或者一个类来进行正确性的检测工作。
1.若是单元测试通过,则证明测试的函数能够正确的工作,
2.反之则证明要么函数有bug要么输入不合法,总之我们需要修复我们的函数功能。

2、对函数进行单元测试

创建python文件MathFunc.py,内容如下:

def mySum(x,y):
  return x + y
def mySub(x,y)
  return x -y
print(mySum(1,2))

创建python文件的text01.py,内容如下:

import unittest
from MathFunc import mySum, mySub
#测试类 继承自unittest.TestCase
class Test(unittest.TestCase):
  #下面两个方法存在的意义:假设需要连接数据库,当测试完毕之后,需要断开和数据库的连接
  def setUp(self):
    print("开始测试时自动调用")
  def tearDown(self):
    print("结束时自动调用")
  #测试相应的函数
  #一般情况下,测试函数命名格式:text_需要被测试的函数名
  def test_mySum(self):
    #断言:对函数命名格式:text_需要被测试的函数名
    self.assertEqual(mySum(1,2),3,"加法有误")
  def test_mySub(self):
    self.asserEqual(mySub(2,1),1,"减法有误")
#当主程序运行的时候,开始进行单元测试
if __name__ == "__main__":
  unittest.main()

运行text01.py文件,发现正常,然后修改MathFunc.py文件中的内容,可按照下面的方式修改。

def mySum(x,y):
  return x + y + 1
def mySub(x, y):
  return x - y
print(mySub(1,2))

再次运行text01.py文件,会出现错误信息。

3、对类进行单元测试

先创建一个类文件person.py,内容如下:

class Person(object):
  #构造方法
  def __init__(self, name, age):
    #给成员变量赋值
    self.name = name
    self.age = age
  def getAge(self):
    return self.age

创建text02.py文件,进行类的单元测试,内容如下:

import unittest
from person import person
class Test(unittest.TestCase):
  def test_init(self):
    p = Person('hanmeimei',20)
    self.asserEqual(p.name,"hanmeimei","属性值有误")
  def test_getAge(self):
    p = Person('hanmeimei',22)
    self.assertEqual(p.getAge(),p.age,"getAge函数有误")
if __name__ = "__main__":
  unittest.mian()

演示,运行text02.py文件,程序正常运行,修改person.py文件中的内容,具体内容如下:

class Person(object):
  #构造方法
  def __init__(self, name, age):
    #给成员变量赋值
    self.name = name
    self.age = age
  def getAge(self):
    return self.age+1

再次运行会报错

对类的单元测试:本质上还是对方法的单元测试。

4、文档测试

文档测试的作用:可以提取注释找那个的代码执行
doctest模块可以提取注释中的代码执行
doctest严格按照python的交互模式的输入进行提取

import doctest
def mySum(x,y):
  #对函数进行功能和使用说明
  '''
  求两个数的和
  get The sum from x and y
  :param x:firstNum
  :param y:secondNum
  :return sum
  #注意有空格
  example:
  >>> print(mySum(1,2))
  3
  '''
  return x + y
print(mySum(1,2))
#进行文档测试,在当前文件中进行即可
doctest.testmod()

注意:演示的时候,主要测试

example:

>>> print(mySum(1,2))
3

关于Python相关内容感兴趣的读者可查看本站专题:《Python函数使用技巧总结》、《Python面向对象程序设计入门与进阶教程》、《Python数据结构与算法教程》、《Python字符串操作技巧汇总》、《Python编码操作技巧总结》及《Python入门与进阶经典教程》

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
wxpython 最小化到托盘与欢迎图片的实现方法
Jun 09 Python
python logging类库使用例子
Nov 22 Python
Python Web框架Flask中使用七牛云存储实例
Feb 08 Python
Python数据结构与算法之常见的分配排序法示例【桶排序与基数排序】
Dec 15 Python
Python实现改变与矩形橡胶的线条的颜色代码示例
Jan 05 Python
python批量复制图片到另一个文件夹
Sep 17 Python
解决pycharm 远程调试 上传 helpers 卡住的问题
Jun 27 Python
django的聚合函数和aggregate、annotate方法使用详解
Jul 23 Python
使用Keras中的ImageDataGenerator进行批次读图方式
Jun 17 Python
python获取系统内存占用信息的实例方法
Jul 17 Python
Python析构函数__del__定义原理解析
Nov 20 Python
python保存大型 .mat 数据文件报错超出 IO 限制的操作
May 10 Python
Python的高阶函数用法实例分析
Apr 11 #Python
Python2与Python3的区别实例分析
Apr 11 #Python
Python3获取电脑IP、主机名、Mac地址的方法示例
Apr 11 #Python
基于django channel实现websocket的聊天室的方法示例
Apr 11 #Python
CentOS7安装Python3的教程详解
Apr 10 #Python
django富文本编辑器的实现示例
Apr 10 #Python
详解Python:面向对象编程
Apr 10 #Python
You might like
索尼ICF-SW100收音机评测
2021/03/02 无线电
php 结果集的分页实现代码
2009/03/10 PHP
php读取mysql乱码,用set names XXX解决的原理分享
2011/12/29 PHP
PHP中使用memcache存储session的三种配置方法
2014/04/05 PHP
PHP使用数组依次替换字符串中匹配项
2016/01/08 PHP
Laravel获取当前请求的控制器和方法以及中间件的例子
2019/10/11 PHP
javascript new后的constructor属性
2010/08/05 Javascript
XMLHTTP 乱码的解决方法(UTF8,GB2312 编码 解码)
2011/01/12 Javascript
javascrpt绑定事件之匿名函数无法解除绑定问题
2012/12/06 Javascript
thinkphp实现无限分类(使用递归)
2015/12/19 Javascript
jQuery实现鼠标选文字发新浪微博的方法
2016/04/02 Javascript
JS简单实现数组去重的方法分析
2017/10/14 Javascript
Node.JS段点续传:Nginx配置文件分段下载功能的实现方法
2018/03/12 Javascript
bootstrap中日历范围选择插件daterangepicker的使用详解
2018/04/17 Javascript
解决Vue-cli npm run build生产环境打包,本地不能打开的问题
2018/09/20 Javascript
JS无限级导航菜单实现方法
2019/01/05 Javascript
详解在Node.js中发起HTTP请求的5种方法
2019/01/10 Javascript
JS函数参数的传递与同名参数实例分析
2020/03/16 Javascript
Nodejs在局域网配置https访问的实现方法
2020/10/17 NodeJs
在vue中使用jsonp进行跨域请求接口操作
2020/10/29 Javascript
python3中dict(字典)的使用方法示例
2017/03/22 Python
tensorflow使用神经网络实现mnist分类
2018/09/08 Python
Python爬虫:url中带字典列表参数的编码转换方法
2019/08/21 Python
windows支持哪个版本的python
2020/07/03 Python
用python对oracle进行简单性能测试
2020/12/05 Python
Python .py生成.pyd文件并打包.exe 的注意事项说明
2021/03/04 Python
使用html2canvas.js实现页面截图并显示或上传的示例代码
2018/12/18 HTML / CSS
AVI-8手表美国官方商店:AVI-8 USA
2019/04/10 全球购物
介绍一下gcc特性
2012/01/20 面试题
文明寄语大全
2014/04/11 职场文书
工程承包协议书
2014/04/22 职场文书
工作推荐信范文
2014/05/10 职场文书
委托书如何写
2014/08/30 职场文书
2014向国旗敬礼网上签名活动总结
2014/09/27 职场文书
2014年学校团委工作总结
2014/12/20 职场文书
oracle通过存储过程上传list保存功能
2021/05/12 Oracle