详解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 相关文章推荐
python使用内存zipfile对象在内存中打包文件示例
Apr 30 Python
python学生信息管理系统
Mar 13 Python
Python3 获取一大段文本之间两个关键字之间的内容方法
Oct 11 Python
python组合无重复三位数的实例
Nov 13 Python
Python3日期与时间戳转换的几种方法详解
Jun 04 Python
如何利用Anaconda配置简单的Python环境
Jun 24 Python
10款最好的Python开发编辑器
Jul 03 Python
windows环境中利用celery实现简单任务队列过程解析
Nov 29 Python
Python线程协作threading.Condition实现过程解析
Mar 12 Python
Python基于paramunittest模块实现excl参数化
Apr 26 Python
django 模型中的计算字段实例
May 19 Python
教你漂亮打印Pandas DataFrames和Series
May 29 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
php实现按照权重随机排序数据的方法
2015/01/09 PHP
php获取网站百度快照日期的方法
2015/07/29 PHP
浅谈PHP中的错误处理和异常处理
2017/02/04 PHP
Javascript的闭包
2009/12/31 Javascript
javascript 隐藏/显示指定的区域附HTML元素【legend】用法
2010/03/05 Javascript
JavaScript全排列的六种算法 具体实现
2013/06/29 Javascript
Extjs4 Treegrid 使用心得分享(经验篇)
2013/07/01 Javascript
Javascript写入txt和读取txt文件示例
2014/02/12 Javascript
javascript:window.open弹出窗口的位置问题
2014/03/18 Javascript
jquery easyui使用心得
2014/07/07 Javascript
node.js中的fs.readdirSync方法使用说明
2014/12/17 Javascript
jQuery+CSS实现的网页二级下滑菜单效果
2015/08/25 Javascript
js window对象属性和方法相关资料整理
2015/11/11 Javascript
JS实现输入框提示文字点击时消失效果
2016/07/19 Javascript
jQuery的中 is(':visible') 解析及用法(必看)
2017/02/12 Javascript
AngularJS改变元素显示状态
2017/04/20 Javascript
JavaScript限定范围拖拽及自定义滚动条应用(3)
2017/05/17 Javascript
Vue.js组件props数据验证实现详解
2019/10/19 Javascript
JS如何实现网站中PC端和手机端自动识别并跳转对应的代码
2020/01/08 Javascript
vue cli3适配所有端方案的实现
2020/04/13 Javascript
vue-以文件流-blob-的形式-下载-导出文件操作
2020/08/07 Javascript
[46:20]CHAOS vs Alliacne 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
python Selenium爬取内容并存储至MySQL数据库的实现代码
2017/03/16 Python
Python 列表(List) 的三种遍历方法实例 详解
2017/04/15 Python
python引入导入自定义模块和外部文件的实例
2017/07/24 Python
Django如何自定义分页
2018/09/25 Python
荷兰男士时尚网上商店:Suitable
2017/12/25 全球购物
小学国庆节活动方案
2014/02/11 职场文书
会计专业职业规划:规划自我赢取未来
2014/02/12 职场文书
法律六进活动方案
2014/03/13 职场文书
我爱我校演讲稿
2014/05/21 职场文书
影子教师研修方案
2014/06/14 职场文书
员工趣味活动方案
2014/08/27 职场文书
群众路线班子对照检查材料
2014/09/25 职场文书
售后服务承诺函格式
2015/01/21 职场文书
2019职场单身人才调研报告:互联网行业单身比例最高
2019/08/07 职场文书