详解Python之unittest单元测试代码


Posted in Python onJanuary 24, 2018

前言

编写函数或者类时,还可以为其编写测试。通过测试,可确定代码面对各种输入都能够按要求的那样工作。

本次我将介绍如何使用Python模块unittest中的工具来测试代码。

测试函数

首先我们先编写一个简单的函数,它接受姓、名、和中间名三个参数,并返回完整的姓名:

names.py

def get_fullname(firstname,lastname,middel=''):
  '''创建全名'''
  if middel:
    full_name = firstname + ' ' + middel + ' ' + lastname
    return full_name.title()
  else:
    full_name = firstname + ' ' + lastname
    return full_name.title()

然后再当前目录下编写调用函数程序

get_name.py

from names import get_fullname

message = "Please input 'q' to quit."
print(message)

while True:
  first = input("Please input your firstname: ")
  if first == 'q':
    break
  last = input("Please input your lastname: ")
  if last == 'q':
    break
  middels = input("Please input your middel name or None: ")
  if last == 'q':
    break
  formant_name = get_fullname(first,last,middels)
  print("\tYour are fullname is: " + formant_name.title())

调用结果:

Please input 'q' to quit.
Please input your firstname: xiao
Please input your lastname: peng
Please input your middel or None:
    Your are fullname is: Xiao Peng
Please input your firstname: xiao
Please input your lastname: peng
Please input your middel or None: you
    Your are fullname is: Xiao You Peng
Please input your firstname: q

进程已结束,退出代码0

创建测试程序

创建测试用例的语法需要一段时间才能习惯,但测试用例创建后,再针对函数的单元测试就很简单了。先导入模块unittest以及要测试的函数,再创建一个继承函数unittest.TestCase的类,

并编写一系列方法对函数行为的不同方便进行测试。

下面介绍测试上面names.py函数是否能够正确的获取姓名:

Test_get_name.py

import unittest
from names import get_fullname

class NamesTestCase(unittest.TestCase):
  '''定义测试类'''
  def test_get_name2(self):
    '''测试2个字的名字'''
    formatied_name2 = get_fullname('xiao','pengyou')
    self.assertEqual(formatied_name2,'Xiao Pengyou')
  def test_get_name3(self):
    '''测试3个字的名字'''
    formatied_name3 = get_fullname('xiao','peng',middel='you')
    self.assertEqual(formatied_name3,'Xiao Peng You')
if __name__ == '__init__':
  unittest.main()

测试结果:

Ran 2 tests in 0.034s

OK

两个测试单元测试通过测试!

在当前的大目录下会生成一个测试报告,可以通过浏览器进行打开查看。

详解Python之unittest单元测试代码

由图可知,两个测试通过,并显示测试的时间!!!

unittest.TestCase的各种断言方法

unittest各种断言方法

方      法 用      途
assertEqual(a,b) 核实a == b
assertNotEqual(a,b) 核实a != b
assertTrue(x) 核实x为True
assertFalse(x) 核实x为False
assertIn(item,list) 核实item在list中
assertNotIn(item,list) 核实item不在list中

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python3基础之基本数据类型概述
Aug 13 Python
Python导出DBF文件到Excel的方法
Jul 25 Python
玩转python爬虫之cookie使用方法
Feb 17 Python
python 实现求解字符串集的最长公共前缀方法
Jul 20 Python
Python实现的栈、队列、文件目录遍历操作示例
May 06 Python
Python3.5 + sklearn利用SVM自动识别字母验证码方法示例
May 10 Python
python pytest进阶之fixture详解
Jun 27 Python
python处理自动化任务之同时批量修改word里面的内容的方法
Aug 23 Python
Numpy 中的矩阵求逆实例
Aug 26 Python
详解python中各种文件打开模式
Jan 19 Python
Python实现石头剪刀布游戏
Jan 20 Python
Python 转移文件至云对象存储的方法
Feb 07 Python
python爬取拉勾网职位数据的方法
Jan 24 #Python
学习Python3 Dlib19.7进行人脸面部识别
Jan 24 #Python
Python实现的生成格雷码功能示例
Jan 24 #Python
Python使用requests及BeautifulSoup构建爬虫实例代码
Jan 24 #Python
Python3结合Dlib实现人脸识别和剪切
Jan 24 #Python
深入浅析Python中的yield关键字
Jan 24 #Python
Python3.6安装及引入Requests库的实现方法
Jan 24 #Python
You might like
CodeIgniter框架数据库事务处理的设计缺陷和解决方案
2014/07/25 PHP
PHP 7.0.2 正式版发布
2016/01/08 PHP
Yii框架实现图片上传的方法详解
2017/05/20 PHP
firefox 和 ie 事件处理的细节,研究,再研究 书写同时兼容ie和ff的事件处理代码
2007/04/12 Javascript
javascript的trim,ltrim,rtrim自定义函数
2008/09/21 Javascript
jquery图片切换插件
2015/03/16 Javascript
nodejs实现获取当前url地址及url各种参数值
2015/06/25 NodeJs
swtich/if...else的替代语句
2015/08/16 Javascript
JavaScript代码实现禁止右键、禁选择、禁粘贴、禁shift、禁ctrl、禁alt
2015/11/17 Javascript
jQuery过滤特殊字符及JS字符串转为数字
2016/05/26 Javascript
jQuery 限制输入字符串长度
2016/06/20 Javascript
妙用Bootstrap的 popover插件实现校验表单提示功能
2016/08/29 Javascript
AngularJs表单验证实例代码解析
2016/11/29 Javascript
jquery实现用户登陆界面(示例讲解)
2017/09/06 jQuery
Vue2.0实现调用摄像头进行拍照功能 exif.js实现图片上传功能
2018/04/28 Javascript
Vue中使用webpack别名的方法实例详解
2018/06/19 Javascript
微信小程序调用摄像头隐藏式拍照功能
2018/08/22 Javascript
node.js调用C++函数的方法示例
2018/09/21 Javascript
axios异步提交表单数据的几种方法
2019/08/11 Javascript
JavaScript实现好看的跟随彩色气泡效果
2020/02/06 Javascript
javascript canvas检测小球碰撞
2020/04/17 Javascript
[39:00]Optic vs VP 2018国际邀请赛淘汰赛BO3 第三场 8.24
2018/08/25 DOTA
学习python之编写简单简单连接数据库并执行查询操作
2016/02/27 Python
解决python3 HTMLTestRunner测试报告中文乱码的问题
2018/12/17 Python
Python基本数据结构之字典类型dict用法分析
2019/06/08 Python
Python中最好用的命令行参数解析工具(argparse)
2019/08/23 Python
基于Python的身份证验证识别和数据处理详解
2020/11/14 Python
编写html5时调试发现脚本php等网页js、css等失效
2013/12/31 HTML / CSS
美国波西米亚风格服装品牌:Show Me Your Mumu
2018/01/05 全球购物
J2EE面试题大全
2016/08/06 面试题
工程师岗位职责规定
2014/02/26 职场文书
销售类求职信
2014/06/13 职场文书
公司采购主管岗位职责
2014/06/17 职场文书
2014年小学校长工作总结
2014/12/08 职场文书
2015年教师师德师风承诺书
2015/04/28 职场文书
html+css实现文字折叠特效实例
2021/06/02 HTML / CSS