详解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的Tornado框架的HTTP客户端的教程
Apr 24 Python
详解Python的Django框架中的模版相关知识
Jul 15 Python
利用python获取Ping结果示例代码
Jul 06 Python
python中文件变化监控示例(watchdog)
Oct 16 Python
Python简单实现查找一个字符串中最长不重复子串的方法
Mar 26 Python
Appium+python自动化怎么查看程序所占端口号和IP
Jun 14 Python
基于python调用psutil模块过程解析
Dec 20 Python
python pyenv多版本管理工具的使用
Dec 23 Python
Python编程快速上手——PDF文件操作案例分析
Feb 28 Python
Python将list元素转存为CSV文件的实现
Nov 16 Python
基于python实现监听Rabbitmq系统日志代码示例
Nov 28 Python
pycharm中leetcode插件使用图文详解
Dec 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
需要使用php模板的朋友必看的很多个顶级PHP模板引擎比较分析
2008/05/26 PHP
用PHP实现浏览器点击下载TXT文档的方法详解
2013/06/02 PHP
PHP数据库万能引擎类adodb配置使用以及实例集锦
2014/06/12 PHP
php实现的SESSION类
2014/12/02 PHP
PHP实现163邮箱自动发送邮件
2016/03/29 PHP
PHP设计模式之原型设计模式原理与用法分析
2018/04/25 PHP
用倒置滤镜把div倒置,再把table倒置。
2007/07/31 Javascript
javascript:以前写的xmlhttp池,代码
2008/05/18 Javascript
javascript addBookmark 加入收藏 多浏览器兼容
2009/08/15 Javascript
js 判断脚本加载完毕的代码
2011/07/13 Javascript
浅析LigerUi开发中谨慎载入common.css文件
2013/07/09 Javascript
JQuery对id中含有特殊字符的转义处理示例
2013/09/06 Javascript
js、css、img等浏览器缓存问题的2种解决方案
2013/10/23 Javascript
在JavaScript中如何解决用execCommand(
2015/10/19 Javascript
javascript实现input file上传图片预览效果
2015/12/31 Javascript
jQuery实现移动端Tab选项卡效果
2017/03/15 Javascript
vue实现样式之间的切换及vue动态样式的实现方法
2017/12/19 Javascript
VueRouter导航守卫用法详解
2017/12/25 Javascript
vue项目实现记住密码到cookie功能示例(附源码)
2018/01/31 Javascript
详解axios中封装使用、拦截特定请求、判断所有请求加载完毕)
2019/04/09 Javascript
JS实现获取当前所在周的周六、周日示例分析
2019/05/11 Javascript
es6中class类静态方法,静态属性,实例属性,实例方法的理解与应用分析
2020/02/15 Javascript
[01:54]胎教DOTA2 准妈妈玩家现身中国区预选赛
2016/06/26 DOTA
Python语言的变量认识及操作方法
2018/02/11 Python
Python中利用aiohttp制作异步爬虫及简单应用
2018/11/29 Python
python快排算法详解
2019/03/04 Python
python 实现批量替换文本中的某部分内容
2019/12/13 Python
党员培训思想汇报
2014/01/07 职场文书
高一学生期末评语
2014/04/25 职场文书
外贸会计专业自荐信
2014/06/22 职场文书
硕士论文致谢范文
2015/05/14 职场文书
2015年学校综合治理工作总结
2015/07/20 职场文书
php中配置文件保存修改操作 如config.php文件的读取修改等操作
2021/05/12 PHP
python3操作redis实现List列表实例
2021/08/04 Python
Spring boot admin 服务监控利器详解
2022/08/05 Java/Android
Python编写车票订购系统 Python实现快递收费系统
2022/08/14 Python