详解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实现删除Android工程中的冗余字符串
Jan 19 Python
详解Python设计模式编程中观察者模式与策略模式的运用
Mar 02 Python
详解Python迭代和迭代器
Mar 28 Python
Python中functools模块函数解析
Mar 12 Python
python文件特定行插入和替换实例详解
Jul 12 Python
Python基于更相减损术实现求解最大公约数的方法
Apr 04 Python
python操作xlsx文件的包openpyxl实例
May 03 Python
python和c语言的主要区别总结
Jul 07 Python
用Python实现校园通知更新提醒功能
Nov 23 Python
10个python3常用排序算法详细说明与实例(快速排序,冒泡排序,桶排序,基数排序,堆排序,希尔排序,归并排序,计数排序)
Mar 17 Python
Django项目uwsgi+Nginx保姆级部署教程实现
Apr 19 Python
Python如何读写二进制数组数据
Aug 01 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类
2006/10/09 PHP
基于php实现长连接的方法与注意事项的问题
2013/05/10 PHP
修改php.ini以达到屏蔽错误信息并记录日志
2013/06/16 PHP
用PHP来计算某个目录大小的方法
2014/04/01 PHP
PHP中的Memcache详解
2014/04/05 PHP
封装ThinkPHP的一个文件上传方法实例
2014/10/31 PHP
ThinkPHP防止重复提交表单的方法实例分析
2018/05/10 PHP
thinkPHP框架实现类似java过滤器的简单方法示例
2018/09/05 PHP
深入分析js中的constructor和prototype
2012/04/07 Javascript
Jquery创建一个层当鼠标移动到层上面不消失效果
2013/12/12 Javascript
JS对字符串编码的几种方式使用指南
2015/05/14 Javascript
使用jquery获取url以及jquery获取url参数的实现方法
2016/05/25 Javascript
jQuery实现根据生日计算年龄 星座 生肖
2016/11/23 Javascript
详解基于angular路由的requireJs按需加载js
2017/01/20 Javascript
js 作用域和变量详解
2017/02/16 Javascript
Vue.js 2.0 移动端拍照压缩图片上传预览功能
2017/03/06 Javascript
认识less和webstrom的less配置方法
2017/08/02 Javascript
js生成word中图片处理方法
2018/01/06 Javascript
vue 项目常用加载器及配置详解
2018/01/22 Javascript
用Fundebug插件记录网络请求异常的方法
2019/02/21 Javascript
JS使用cookie保存用户登录信息操作示例
2019/05/30 Javascript
详解Vscode中使用Eslint终极配置大全
2019/11/08 Javascript
js滚轮事件 js自定义滚动条的实现
2020/01/18 Javascript
JavaScript设计模式之策略模式实现原理详解
2020/05/29 Javascript
python client使用http post 到server端的代码
2013/02/10 Python
跟老齐学Python之总结参数的传递
2014/10/10 Python
pip install urllib2不能安装的解决方法
2018/06/12 Python
Python 数值区间处理_对interval 库的快速入门详解
2018/11/16 Python
利用Python正则表达式过滤敏感词的方法
2019/01/21 Python
Django ORM 聚合查询和分组查询实现详解
2019/08/09 Python
Python内置类型性能分析过程实例
2020/01/29 Python
Python 实现将大图切片成小图,将小图组合成大图的例子
2020/03/14 Python
巴西最大的珠宝连锁店:Vivara
2019/04/18 全球购物
工作保证书怎么写
2015/02/28 职场文书
幼儿园个人总结
2015/02/28 职场文书
找规律教学反思
2016/02/23 职场文书