详解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 31 Python
Python字符串格式化的方法(两种)
Sep 19 Python
Python把csv数据写入list和字典类型的变量脚本方法
Jun 15 Python
python使用PIL给图片添加文字生成海报示例
Aug 17 Python
新手入门Python编程的8个实用建议
Jul 12 Python
Python检查图片是否损坏及图片类型是否正确过程详解
Sep 30 Python
python模块hashlib(加密服务)知识点讲解
Nov 25 Python
Python标准库shutil模块使用方法解析
Mar 10 Python
使用python实现微信小程序自动签到功能
Apr 27 Python
python实现图片,视频人脸识别(dlib版)
Nov 18 Python
使用python如何删除同一文件夹下相似的图片
May 07 Python
python编写五子棋游戏
May 25 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整合Tank Auth权限类库详解
2014/06/12 PHP
PHP文件与目录操作示例
2016/12/24 PHP
PDO::inTransaction讲解
2019/01/28 PHP
javascript CSS画图之基础篇
2009/07/29 Javascript
Js 时间函数getYear()的使用问题探讨
2013/04/01 Javascript
js操作iframe兼容各种主流浏览器示例代码
2013/07/22 Javascript
验证码在IE中不刷新而谷歌等浏览器正常的解决方案
2014/03/18 Javascript
深入浅析javascript中的作用域(推荐)
2016/07/19 Javascript
jQuery 全选 全部选 反选 实现代码
2016/08/17 Javascript
DataTables添加额外的查询参数和删除columns等无用参数实例
2017/07/04 Javascript
详解Element 指令clickoutside源码分析
2019/02/15 Javascript
layui表格内容溢出的解决方法
2019/09/06 Javascript
node.js 使用 net 模块模拟 websocket 握手进行数据传递操作示例
2020/02/11 Javascript
[03:11]DOTA2上海特锦赛小组赛第一日recap精彩回顾
2016/02/28 DOTA
介绍Python中的fabs()方法的使用
2015/05/14 Python
Python json 错误xx is not JSON serializable解决办法
2017/03/15 Python
用python与文件进行交互的方法
2018/03/01 Python
pycharm运行出现ImportError:No module named的解决方法
2018/10/13 Python
修改默认的pip版本为对应python2.7的方法
2018/11/06 Python
Python使用到第三方库PyMuPDF图片与pdf相互转换
2019/05/03 Python
详解利用python+opencv识别图片中的圆形(霍夫变换)
2019/07/01 Python
Python Django 命名空间模式的实现
2019/08/09 Python
pandas 缺失值与空值处理的实现方法
2019/10/12 Python
HTML5实现晶莹剔透的雨滴特效
2014/05/14 HTML / CSS
售后专员岗位职责
2013/12/08 职场文书
服务承诺书范文
2014/05/19 职场文书
家长会欢迎标语
2014/06/24 职场文书
学生会干部自我鉴定2014
2014/09/18 职场文书
2014党的群众路线教育实践活动学习心得体会
2014/10/31 职场文书
财务会计岗位职责
2015/02/03 职场文书
远程教育集中轮训基层干部培训班学习心得体会
2016/01/09 职场文书
Spring Security中用JWT退出登录时遇到的坑
2021/10/16 Java/Android
Python实现批量自动整理文件
2022/03/16 Python
详解Alibaba Java诊断工具Arthas查看Dubbo动态代理类
2022/04/08 Java/Android
第四次工业革命,打工人与机器人的竞争
2022/04/21 数码科技
vue el-table实现递归嵌套的示例代码
2022/08/14 Vue.js