详解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编写一个基于终端的实现翻译的脚本
Apr 24 Python
简单介绍Python中的floor()方法
May 15 Python
Python语言的变量认识及操作方法
Feb 11 Python
Pandas之drop_duplicates:去除重复项方法
Apr 18 Python
python高阶爬虫实战分析
Jul 29 Python
Python中对数组集进行按行打乱shuffle的方法
Nov 08 Python
利用Python求阴影部分的面积实例代码
Dec 05 Python
Python基于聚类算法实现密度聚类(DBSCAN)计算【测试可用】
Dec 26 Python
python ipset管理 增删白名单的方法
Jan 14 Python
利用python实现短信和电话提醒功能的例子
Aug 08 Python
解决tensorflow 释放图,删除变量问题
Jun 23 Python
python中np是做什么的
Jul 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
搭建基于Docker的PHP开发环境的详细教程
2015/07/01 PHP
PHP模拟http请求的方法详解
2016/11/09 PHP
老生常谈PHP面向对象之注册表模式
2017/05/26 PHP
PHP实现的策略模式简单示例
2017/08/25 PHP
Jquery工作常用实例 使用AJAX使网页进行异步更新
2011/07/26 Javascript
jQuery实现统计复选框选中数量
2014/11/24 Javascript
基于jQuery实现的美观星级评论打分组件代码
2015/10/30 Javascript
浅谈JavaScript中数组的增删改查
2016/06/20 Javascript
AngularJS基础 ng-srcset 指令简单示例
2016/08/03 Javascript
AngularJS实现网站换肤实例
2021/02/19 Javascript
Javascript DOM事件操作小结(监听鼠标点击、释放,悬停、离开等)
2017/01/20 Javascript
node.js 用socket实现聊天的示例代码
2017/10/17 Javascript
Vue 兄弟组件通信的方法(不使用Vuex)
2017/10/26 Javascript
JS实现获取自定义属性data值的方法示例
2018/12/19 Javascript
JS实现的杨辉三角【帕斯卡三角形】算法示例
2019/02/26 Javascript
Vue数据驱动表单渲染,轻松搞定form表单
2019/07/19 Javascript
vue element upload实现图片本地预览
2019/08/20 Javascript
vue axios封装httpjs,接口公用配置拦截操作
2020/08/11 Javascript
详细解读Python中的__init__()方法
2015/05/02 Python
python中os模块详解
2016/10/14 Python
Python学习之用pygal画世界地图实例
2017/12/07 Python
Java实现的执行python脚本工具类示例【使用jython.jar】
2018/03/29 Python
python3基于OpenCV实现证件照背景替换
2018/07/18 Python
python设置环境变量的原因和方法
2019/06/24 Python
Django实现网页分页功能
2019/10/31 Python
英国最大的汽车交易网站:Auto Trader UK
2016/09/23 全球购物
华为智利官方商店:Huawei Chile
2020/05/09 全球购物
出生医学证明样本
2014/01/17 职场文书
宣传策划类求职信范文
2014/01/31 职场文书
小学生倡议书范文
2014/05/13 职场文书
本科毕业生应聘求职信
2014/07/06 职场文书
2015年网络管理员工作总结
2015/05/21 职场文书
2016暑期校本培训心得体会
2016/01/08 职场文书
《画家和牧童》教学反思
2016/02/17 职场文书
民事调解协议书
2016/03/21 职场文书
如何理解python接口自动化之logging日志模块
2021/06/15 Python