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 字符串split的用法分享
Mar 23 Python
django 自定义用户user模型的三种方法
Nov 18 Python
python检测远程端口是否打开的方法
Mar 14 Python
Python中with及contextlib的用法详解
Jun 08 Python
django使用admin站点上传图片的实例
Jul 28 Python
Python学习笔记之列表推导式实例分析
Aug 13 Python
python实现爱奇艺登陆密码RSA加密的方法示例详解
May 27 Python
Python数据可视化实现漏斗图过程图解
Jul 20 Python
python 实现朴素贝叶斯算法的示例
Sep 30 Python
python实现学生信息管理系统(精简版)
Nov 27 Python
Python爬虫基础之初次使用scrapy爬虫实例
Jun 26 Python
如何用Python搭建gRPC服务
Jun 30 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 is_subclass_of函数的一个BUG和解决方法
2014/06/01 PHP
php向js函数传参的几种方法
2014/08/10 PHP
PHP简单的MVC框架实现方法
2015/12/01 PHP
php基于SQLite实现的分页功能示例
2017/06/21 PHP
php获取小程序码的实现代码(B类接口)
2020/06/13 PHP
jQuery 使用手册(六)
2009/09/23 Javascript
js调用webservice中的方法实现思路及代码
2013/02/25 Javascript
JavaScript 验证码的实例代码(附效果图)
2013/03/22 Javascript
JQuery页面的表格数据的增加与分页的实现
2013/12/10 Javascript
js字符串完全替换函数分享
2014/12/03 Javascript
JS+CSS实现的拖动分页效果实例
2015/05/11 Javascript
JavaScript实现文本框中默认显示背景图片在获得焦点后消失的方法
2015/07/01 Javascript
javascript中if和switch,==和===详解
2015/07/30 Javascript
常用的Javascript设计模式小结
2015/12/09 Javascript
JS实现的在线调色板实例(附demo源码下载)
2016/03/01 Javascript
JQ中$(window).load和$(document).ready区别与执行顺序
2017/03/01 Javascript
layui实现数据分页功能(ajax异步)
2019/07/27 Javascript
JS实现简易计算器
2020/02/14 Javascript
ES6中的类(Class)示例详解
2020/12/09 Javascript
[58:29]DOTA2-DPC中国联赛 正赛 Phoenix vs XG BO3 第一场 1月31日
2021/03/11 DOTA
python海龟绘图实例教程
2014/07/24 Python
Python中输出ASCII大文字、艺术字、字符字小技巧
2015/04/28 Python
在Django的视图(View)外使用Session的方法
2015/07/23 Python
Django Rest framework认证组件详细用法
2019/07/25 Python
pandas factorize实现将字符串特征转化为数字特征
2019/12/19 Python
Python小白垃圾回收机制入门
2020/06/09 Python
AE美国鹰日本官方网站: American Eagle Outfitters
2016/12/10 全球购物
美国畅销的跑步机品牌:ProForm
2017/02/06 全球购物
Get The Label中文官网:英国运动时尚购物平台
2017/04/19 全球购物
Charlotte Tilbury英国官网:英国彩妆品牌
2017/05/26 全球购物
美国最大的高尔夫发球时间预订网站:TeeOff.com
2018/03/28 全球购物
儿子婚宴答谢词
2014/01/09 职场文书
2014房屋登记授权委托书
2014/10/13 职场文书
赵乐秦在党的群众路线教育实践活动总结大会上的讲话稿
2014/10/25 职场文书
2015年体育教师个人工作总结
2015/05/12 职场文书
村主任当选感言
2015/08/01 职场文书