详解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 相关文章推荐
pyside写ui界面入门示例
Jan 22 Python
在Python中处理字符串之isdecimal()方法的使用
May 20 Python
Python简单实现enum功能的方法
Apr 25 Python
浅谈numpy库的常用基本操作方法
Jan 09 Python
用python与文件进行交互的方法
Mar 01 Python
使用Flask集成bootstrap的方法
Jul 24 Python
matplotlib.pyplot画图并导出保存的实例
Dec 07 Python
pytorch GAN生成对抗网络实例
Jan 10 Python
通过python检测字符串的字母
Feb 18 Python
Django-imagekit的使用详解
Jul 06 Python
简单的命令查看安装的python版本号
Aug 28 Python
virtualenv隔离Python环境的问题解析
Jun 21 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
递归列出所有文件和目录
2006/10/09 PHP
php打印输出棋盘的实现方法
2014/12/23 PHP
PHP精确到毫秒秒杀倒计时实例详解
2019/03/14 PHP
浅谈laravel5.5 belongsToMany自身的正确用法
2019/10/17 PHP
兼容IE和Firefox的javascript获取iframe文档内容的函数
2011/08/15 Javascript
JQuery的Ajax跨域请求原理概述及实例
2013/04/26 Javascript
深入领悟JavaScript中的面向对象
2013/11/18 Javascript
jquery解析xml字符串简单示例
2014/04/11 Javascript
如何解决手机浏览器页面点击不跳转浏览器双击放大网页
2016/07/01 Javascript
RGB和YUV 多媒体编程基础详细介绍
2016/11/04 Javascript
原生js实现放大镜
2017/02/20 Javascript
vue mounted组件的使用
2018/06/18 Javascript
Vue项目中添加锁屏功能实现思路
2018/06/29 Javascript
在 Angular6 中使用 HTTP 请求服务端数据的步骤详解
2018/08/06 Javascript
Layui数据表格跳转到指定页的实现方法
2019/09/05 Javascript
解决webpack多页面内存溢出的方法示例
2019/10/08 Javascript
用js编写留言板
2020/03/17 Javascript
[50:29]2014 DOTA2华西杯精英邀请赛 5 24 DK VS iG
2014/05/26 DOTA
[00:32]2018DOTA2亚洲邀请赛VGJ.T出场
2018/04/03 DOTA
Python socket实现简单聊天室
2018/04/01 Python
Django REST framework视图的用法
2019/01/16 Python
Python3 itchat实现微信定时发送群消息的实例代码
2019/07/12 Python
seek引发的python文件读写的问题及解决
2019/07/26 Python
Python标准库itertools的使用方法
2020/01/17 Python
Python模拟伯努利试验和二项分布代码实例
2020/05/27 Python
网页中的电话号码如何实现一键直呼效果_附示例
2016/03/15 HTML / CSS
外企测试工程师面试题
2015/02/01 面试题
继承时候类的执行顺序问题,一般都是选择题,问你将会打印出什么?
2015/11/18 面试题
建筑设计所实习生自我鉴定
2013/09/25 职场文书
工程业务员工作职责
2013/12/07 职场文书
机关门卫制度
2014/02/01 职场文书
团日活动总结书格式
2014/05/08 职场文书
给公司的建议书范文
2014/05/13 职场文书
公司募捐倡议书
2014/05/14 职场文书
农业生产宣传标语
2014/10/08 职场文书
爱心助学感谢信
2015/01/21 职场文书