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 相关文章推荐
Python学习之asyncore模块用法实例教程
Sep 29 Python
Python基于smtplib实现异步发送邮件服务
May 28 Python
python运行其他程序的实现方法
Jul 14 Python
python re模块的高级用法详解
Jun 06 Python
python 使用 requests 模块发送http请求 的方法
Dec 09 Python
python循环定时中断执行某一段程序的实例
Jun 29 Python
Python字典推导式将cookie字符串转化为字典解析
Aug 10 Python
python rsync服务器之间文件夹同步脚本
Aug 29 Python
selenium+python实现自动登陆QQ邮箱并发送邮件功能
Dec 13 Python
Python编程快速上手——疯狂填词程序实现方法分析
Feb 29 Python
python中get和post有什么区别
Jun 19 Python
opencv 图像滤波(均值,方框,高斯,中值)
Jul 08 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
php生成过去100年下拉列表的方法
2015/07/20 PHP
CentOS 上搭建 PHP7 开发测试环境
2017/02/26 PHP
ThinkPHP框架表单验证操作方法
2017/07/19 PHP
Laravel如何同时连接多个数据库详解
2019/08/13 PHP
鼠标移到图片上变大显示而不是放大镜效果
2014/06/15 Javascript
推荐6款基于jQuery实现图片效果插件
2014/12/07 Javascript
详细解密jsonp跨域请求
2015/04/15 Javascript
js实现鼠标移到链接文字弹出一个提示层的方法
2015/05/11 Javascript
Jquery中使用show()与hide()方法动画显示和隐藏图片
2015/10/08 Javascript
基于Vue.js实现简单搜索框
2020/03/26 Javascript
谈谈JavaScript中浏览器兼容问题的写法小议
2016/12/17 Javascript
jQuery实现base64前台加密解密功能详解
2017/08/29 jQuery
微信小程序返回多级页面的实现方法
2017/10/27 Javascript
vue.js默认路由不加载linkActiveClass问题的解决方法
2017/12/11 Javascript
Vue + better-scroll 实现移动端字母索引导航功能
2018/05/07 Javascript
JavaScript 正则命名分组【推荐】
2018/06/07 Javascript
JavaScript原型链与继承操作实例总结
2018/08/24 Javascript
微信小程序自定义select下拉选项框组件的实现代码
2018/08/28 Javascript
vue发送websocket请求和http post请求的实例代码
2019/07/11 Javascript
Vue2.0实现简单分页及跳转效果
2019/07/29 Javascript
深入理解javascript prototype的相关知识
2019/09/19 Javascript
[56:24]DOTA2上海特级锦标赛主赛事日 - 3 胜者组第二轮#1Liquid VS MVP.Phx第二局
2016/03/04 DOTA
[14:24]Optic Gaming vs PSG LGD BO3
2018/06/07 DOTA
Python计算两个日期相差天数的方法示例
2017/05/23 Python
Python调用scp向服务器上传文件示例
2019/12/22 Python
python绘图pyecharts+pandas的使用详解
2020/12/13 Python
酒店管理自荐信
2013/10/23 职场文书
公司活动邀请函
2014/01/24 职场文书
人力资源经理的岗位职责
2014/03/02 职场文书
建筑安全标语
2014/06/07 职场文书
合作与交流自我评价
2015/03/09 职场文书
2015年财务经理工作总结
2015/05/13 职场文书
go语言中GOPATH GOROOT的作用和设置方式
2021/05/05 Golang
Redis读写分离搭建的完整步骤
2021/09/14 Redis
MySQL学习之基础命令实操总结
2022/03/19 MySQL
Android Rxjava3 使用场景详解
2022/04/07 Java/Android