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中获取对象信息的方法
Apr 27 Python
Python实现统计文本文件字数的方法
May 05 Python
关于python2 csv写入空白行的问题
Jun 22 Python
浅谈Python脚本开头及导包注释自动添加方法
Oct 27 Python
pyinstaller打包多个py文件和去除cmd黑框的方法
Jun 21 Python
python 利用浏览器 Cookie 模拟登录的用户访问知乎的方法
Jul 11 Python
python selenium登录豆瓣网过程解析
Aug 10 Python
python 利用jinja2模板生成html代码实例
Oct 10 Python
Python 获取numpy.array索引值的实例
Dec 06 Python
Python如何操作docker redis过程解析
Aug 10 Python
python实现自动化群控的步骤
Apr 11 Python
一行代码python实现文件共享服务器
Apr 22 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
把1316这个数表示成两个数的和,其中一个为13的倍数,另一个是11的倍数,求这两个数。
2011/06/24 PHP
php判断字符串在另一个字符串位置的方法
2014/02/27 PHP
浅谈PHP中的数据传输CURL
2016/09/06 PHP
浅谈PHP面向对象之访问者模式+组合模式
2017/05/22 PHP
PHP fprintf()函数用法讲解
2019/02/16 PHP
Laravel框架下载,安装及路由操作图文详解
2019/12/04 PHP
javascript css float属性的特殊写法
2008/11/13 Javascript
一个判断email合法性的函数[非正则]
2008/12/09 Javascript
javascript 学习之旅 (1)
2009/02/05 Javascript
$.each与$().each的区别示例介绍
2014/03/20 Javascript
javascript实现捕捉键盘上按下的键
2015/05/05 Javascript
javascript框架设计之框架分类及主要功能
2015/06/23 Javascript
深入剖析JavaScript编程中的对象概念
2015/10/21 Javascript
深入浅析JS的数组遍历方法(推荐)
2016/06/15 Javascript
老生常谈js动态添加事件--- 事件委托
2016/07/19 Javascript
Ionic3实现图片瀑布流布局
2017/08/09 Javascript
JavaScript框架Angular和React深度对比
2017/11/20 Javascript
在iFrame子页面里实现模态框的方法
2018/08/17 Javascript
vue3.0中使用postcss-pxtorem的具体方法
2019/11/20 Javascript
Vue 实现登录界面验证码功能
2020/01/03 Javascript
超详细小程序定位地图模块全系列开发教学
2020/11/24 Javascript
基于Vue2实现移动端图片上传、压缩、拖拽排序、拖拽删除功能
2021/01/05 Vue.js
python局部赋值的规则
2013/03/07 Python
python调用windows api锁定计算机示例
2014/04/17 Python
Python抽象和自定义类定义与用法示例
2018/08/23 Python
详解利用OpenCV提取图像中的矩形区域(PPT屏幕等)
2019/07/01 Python
python实现飞机大战小游戏
2019/11/08 Python
ansible动态Inventory主机清单配置遇到的坑
2020/01/19 Python
如何基于Python实现数字类型转换
2020/02/07 Python
Python实现SMTP邮件发送
2020/06/16 Python
详解如何使用Pytest进行自动化测试
2021/01/14 Python
肯尼迪就职演说稿
2013/12/31 职场文书
毕业生自荐书
2014/02/03 职场文书
小学生竞选班干部演讲稿
2014/04/24 职场文书
学校课外活动总结
2014/05/08 职场文书
实习推荐信格式模板
2015/03/27 职场文书