详解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基础教程之缩进介绍
Aug 29 Python
Python 字符串操作(string替换、删除、截取、复制、连接、比较、查找、包含、大小写转换、分割等)
Mar 19 Python
对python函数签名的方法详解
Jan 22 Python
使用Python正则表达式操作文本数据的方法
May 14 Python
python networkx 包绘制复杂网络关系图的实现
Jul 10 Python
pycharm修改文件的默认打开方式的步骤
Jul 29 Python
Python算法中的时间复杂度问题
Nov 19 Python
用Python开发app后端有优势吗
Jun 29 Python
.img/.hdr格式转.nii格式的操作
Jul 01 Python
keras的三种模型实现与区别说明
Jul 03 Python
Python绘制散乱的点构成的图的方法
Apr 21 Python
Python四款GUI图形界面库介绍
Jun 05 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 数组排序 array_multisort与uasort的区别
2011/03/24 PHP
使用NetBeans + Xdebug调试PHP程序的方法
2011/04/12 PHP
PHP中return 和 exit 、break和contiue 区别与用法
2012/04/09 PHP
Thinkphp5.0自动生成模块及目录的方法详解
2017/04/17 PHP
Laravel 中创建 Zip 压缩文件并提供下载的实现方法
2019/04/02 PHP
PHP信号处理机制的操作代码讲解
2019/04/19 PHP
用javascript实现的仿Flash广告图片轮换效果
2007/04/24 Javascript
JavaScript 核心参考教程 内置对象
2009/10/13 Javascript
浅谈Javascript鼠标和滚轮事件
2012/06/27 Javascript
js函数中onmousedown和onclick的区别和联系探讨
2013/05/19 Javascript
解决checkbox的attr(checked)一直为undefined问题
2014/06/16 Javascript
javascript使用正则获取url上的某个参数
2014/09/04 Javascript
js实现3D图片逐张轮播幻灯片特效代码分享
2015/09/09 Javascript
jQuery基于ajax()使用serialize()提交form数据的方法
2015/12/08 Javascript
Vue.js常用指令汇总(v-if、v-for等)
2016/11/03 Javascript
Bootstrap3多级下拉菜单
2017/02/24 Javascript
jQuery Pagination分页插件使用方法详解
2017/02/28 Javascript
canvas实现爱心和彩虹雨效果
2017/03/09 Javascript
React组件refs的使用详解
2018/02/09 Javascript
详解vue数组遍历方法forEach和map的原理解析和实际应用
2018/11/15 Javascript
浅谈layui里的上传控件问题
2019/09/26 Javascript
jQuery实现数字华容道小游戏(实例代码)
2020/01/16 jQuery
python列表操作使用示例分享
2014/02/21 Python
在Python中使用HTMLParser解析HTML的教程
2015/04/29 Python
Python中enumerate()函数编写更Pythonic的循环
2018/03/06 Python
python实现csv格式文件转为asc格式文件的方法
2018/03/23 Python
python 在指定范围内随机生成不重复的n个数实例
2019/01/28 Python
Python调用C语言的实现
2019/07/26 Python
Anaconda 查看、创建、管理和使用python环境的方法
2019/12/03 Python
利用pyshp包给shapefile文件添加字段的实例
2019/12/06 Python
Python实现代码块儿折叠
2020/04/15 Python
CSS3旋转——彩色扇子兼容firefox浏览器
2013/06/04 HTML / CSS
人力资源专业推荐信
2013/11/29 职场文书
《歌唱二小放牛郎》教学反思
2014/04/19 职场文书
行政介绍信范文
2015/05/04 职场文书
基于docker安装zabbix的详细教程
2022/06/05 Servers