Python单元测试与测试用例简析


Posted in Python onNovember 09, 2019

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

单元测试与测试用例

简介

测试用例是一组单元测试,这些单元测试一起核实函数在各种情形下的行为都符合要求

要为函数编写测试用例,可先导入模块 unittest 以及要测试的函数,再创建一个继承unittest.TestCase 的类,并编写一系列方法对函数行为的不同方面进行测试

创建实例(对比接收到的名和姓是否符合要求)

1.先创建个name_function.py的文件(文件名称可以另取),接收名和姓并返回整洁的全名

def get_formatted_name(first,last,middle=''):
  '''生成整洁的姓名'''
  if middle:
    full_name=first+' '+middle+' '+last
  else:
    full_name=first+' '+last
  return full_name.title()

2.再创建个test_name_function.py的文件,检查name_function.py()在给定名和姓时能否正确地工作

import unittest
from name_function import get_formatted_name
class NamesTestCase(unittest.TestCase):
  """测试name_function.py"""
  def test_first_last_name(self):
    """能够正确处理姓名么?"""
    formatted_name = get_formatted_name('liu','wei' )
    self.assertEquals(formatted_name, 'Liu Wei')
unittest.main()

上述代码思路:

  1. 导入模块 unittest 和要测试的函数 get_formatted_name()
  2. 创建一个名为 NamesTestCase 的类(类的命名可任取,但最好让它看起来与要测试的函数相关,并包含字样Test),用于包含一系列针对get_formatted_name()的单元测试。这个类必须继承unittest.TestCase,这样Python才知道如何运行你编写的测试
  3. NamesTestCase只包含一个方法,我将这个方法命名为test_first_last_name(),我们运行test_name_function.py 时,所有以test_打头的方法都将自动运行。在这个示例中,使用了实参‘liu'和‘wei'调用get_formatted_name(),并将结果存储到变量 formatted_name
  4. assertEquals()unittest类最有用的功能之一:一个断言方法。断言方法用来核实得到的结果与期望的结果一致。self.assertEquals(formatted_name, 'Liu Wei') 的意思是:将formatted_name 的值同字符串 'Liu Wei'进行比较
  5. 代码行unittest.main()让Python运行这个文件中的测试。

运行结果如下:

----------------------------------------------------------------------
Ran 1 test in 0.000s

OK

第1句的句点表明有一个测试通过。接下来的一行指出Python运行了一个测试,消耗的时间不到0.001秒。最后的OK表明该测试用例中的所有单元测试都通过了。

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

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

Python 相关文章推荐
剖析Python的Twisted框架的核心特性
May 25 Python
Python数据分析之真实IP请求Pandas详解
Nov 18 Python
requests和lxml实现爬虫的方法
Jun 11 Python
itchat和matplotlib的结合使用爬取微信信息的实例
Aug 25 Python
让Django支持Sql Server作后端数据库的方法
May 29 Python
在Pandas中给多层索引降级的方法
Nov 16 Python
python 使用poster模块进行http方式的文件传输到服务器的方法
Jan 15 Python
详解如何设置Python环境变量?
May 13 Python
python 设置输出图像的像素大小方法
Jul 04 Python
Python实现蒙特卡洛算法小实验过程详解
Jul 12 Python
使用matplotlib动态刷新指定曲线实例
Apr 23 Python
Python接口测试文件上传实例解析
May 22 Python
python自动化测试之异常及日志操作实例分析
Nov 09 #Python
Python多线程模块Threading用法示例小结
Nov 09 #Python
Python for循环及基础用法详解
Nov 08 #Python
python常用排序算法的实现代码
Nov 08 #Python
python分布式编程实现过程解析
Nov 08 #Python
详解mac python+selenium+Chrome 简单案例
Nov 08 #Python
python manage.py runserver流程解析
Nov 08 #Python
You might like
星际争霸秘籍
2020/03/04 星际争霸
php实现memcache缓存示例讲解
2013/12/04 PHP
不用AJAX和IFRAME,说说真正意义上的ASP+JS无刷新技术
2008/09/25 Javascript
Javascript中浮点数相乘的一个解决方法
2014/06/03 Javascript
Node.js与PHP、Python的字符处理性能对比
2014/07/06 Javascript
js数组与字符串的相互转换方法
2014/07/09 Javascript
JavaScript中reduce()方法的使用详解
2015/06/09 Javascript
javascript实现一个数值加法函数
2015/06/26 Javascript
BootStrap智能表单实战系列(八)表单配置json详解
2016/06/13 Javascript
JS获取html元素的标记名实现方法
2016/10/08 Javascript
微信小程序 setData的使用方法详解
2017/04/20 Javascript
BootStrap Select清除选中的状态恢复默认状态
2017/06/20 Javascript
NW.js 简介与使用方法
2018/02/01 Javascript
js+css实现红包雨效果
2018/07/12 Javascript
element-ui的回调函数Events的用法详解
2018/10/16 Javascript
点击按钮弹出模态框的一系列操作代码实例
2019/03/29 Javascript
Vuex,iView UI面包屑导航使用扩展详解
2019/11/04 Javascript
Windows上node.js的多版本管理工具用法实例分析
2019/11/06 Javascript
vue 对axios get pust put delete封装的实例代码
2020/01/05 Javascript
ES6学习教程之Promise用法详解
2020/11/22 Javascript
[02:06]2018完美世界全国高校联赛秋季赛开始报名(附彩蛋)
2018/09/03 DOTA
Python的装饰器用法学习笔记
2016/06/24 Python
Python reduce()函数的用法小结
2017/11/15 Python
教你用一行Python代码实现并行任务(附代码)
2018/02/02 Python
python查找重复图片并删除(图片去重)
2019/07/16 Python
使用python模拟命令行终端的示例
2019/08/13 Python
pytorch 固定部分参数训练的方法
2019/08/17 Python
安装PyInstaller失败问题解决
2019/12/14 Python
用css3实现当鼠标移进去时当前亮其他变灰效果
2014/04/08 HTML / CSS
日本著名的平价时尚女性购物网站:Fifth
2016/08/24 全球购物
装潢设计实习自我鉴定
2013/09/19 职场文书
瘦西湖导游词
2015/02/03 职场文书
社区禁毒宣传活动总结
2015/05/07 职场文书
2015年会计工作总结范文
2015/05/26 职场文书
信息技术课教学反思
2016/02/23 职场文书
Java实现超大Excel文件解析(XSSF,SXSSF,easyExcel)
2022/07/15 Java/Android