详解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辅助脚本(总结)
Jan 11 Python
查找python项目依赖并生成requirements.txt的方法
Jul 10 Python
Sanic框架配置操作分析
Jul 17 Python
python 内置模块详解
Jan 01 Python
Python3+Appium实现多台移动设备操作的方法
Jul 05 Python
Python使用Pandas库实现MySQL数据库的读写
Jul 06 Python
Python使用Beautiful Soup爬取豆瓣音乐排行榜过程解析
Aug 15 Python
Python列表切片常用操作实例解析
Dec 16 Python
python 实现让字典的value 成为列表
Dec 16 Python
如何用python处理excel表格
Jun 09 Python
分享一个python的aes加密代码
Dec 22 Python
python上下文管理的使用场景实例讲解
Mar 03 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
了解咖啡雨林联盟认证 什么是雨林认证 雨林认证是什么意思
2021/03/05 新手入门
PHP mail 通过Windows的SMTP发送邮件失败的解决方案
2009/05/27 PHP
使用PHP计算两个路径的相对路径
2013/06/14 PHP
PHP中把stdClass Object转array的几个方法
2014/05/08 PHP
用 Composer构建自己的 PHP 框架之使用 ORM
2014/10/30 PHP
PHP中$this和$that指针使用实例
2015/01/06 PHP
thinkphp中字符截取函数msubstr()用法分析
2016/01/09 PHP
非常有用的9个PHP代码片段
2016/04/06 PHP
注释PHP和html混合代码的小技巧(分享)
2016/11/03 PHP
jquery的ajax和getJson跨域获取json数据的实现方法
2014/02/04 Javascript
jQuery通过写入cookie实现更换网页背景的方法
2016/04/15 Javascript
jQuery实现无限往下滚动效果代码
2016/04/16 Javascript
Vue中的v-cloak使用解读
2017/03/27 Javascript
JS给按钮添加跳转功能类似a标签
2017/05/30 Javascript
深入解析nodejs HTTP服务
2017/07/25 NodeJs
微信小程序 同步请求授权的详解
2017/08/04 Javascript
细述Javascript的加法运算符的具体使用
2019/10/18 Javascript
python的id()函数介绍
2013/02/10 Python
新手常见6种的python报错及解决方法
2018/03/09 Python
Python字符串和正则表达式中的反斜杠('\')问题详解
2019/09/03 Python
python 实现turtle画图并导出图片格式的文件
2019/12/07 Python
Python爬虫入门有哪些基础知识点
2020/06/02 Python
拿来就用!Python批量合并PDF的示例代码
2020/08/10 Python
HTML5 Canvas中使用用路径描画圆弧
2015/01/01 HTML / CSS
双立人美国官方商店:ZWILLING集团餐具和炊具
2020/05/07 全球购物
一家外企的面试题目(C/C++面试题,C语言面试题)
2014/03/24 面试题
常用UNIX 命令(Linux的常用命令)
2013/07/10 面试题
十八大闭幕感言
2014/01/22 职场文书
体育课外活动总结
2014/07/08 职场文书
学校安全管理责任书
2014/07/23 职场文书
年底个人总结范文
2015/03/10 职场文书
2015年七夕爱情寄语
2015/03/24 职场文书
新年晚会开场白
2015/05/29 职场文书
电影小兵张嘎观后感
2015/06/03 职场文书
婚宴新娘致辞
2015/07/28 职场文书
2016寒假社会实践心得体会范文
2015/10/09 职场文书