详解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利用hook技术破解https的实例代码
Mar 25 Python
Python去掉字符串中空格的方法
Mar 11 Python
python简单实现基数排序算法
May 16 Python
Python实现基于二叉树存储结构的堆排序算法示例
Dec 08 Python
微信跳一跳python自动代码解读1.0
Jan 12 Python
Python网络编程基于多线程实现多用户全双工聊天功能示例
Apr 10 Python
使用python将时间转换为指定的格式方法
Nov 12 Python
python实现二维插值的三维显示
Dec 17 Python
python实现感知器算法(批处理)
Jan 18 Python
python实现维吉尼亚加密法
Mar 20 Python
pytorch torch.nn.AdaptiveAvgPool2d()自适应平均池化函数详解
Jan 03 Python
python isinstance函数用法详解
Feb 13 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 防止单引号,双引号在接受页面转义
2008/07/10 PHP
PHP 地址栏信息的获取代码
2009/01/07 PHP
PHP面向对象之旅:深入理解static变量与方法
2014/01/06 PHP
CI框架在CLI下执行占用内存过大问题的解决方法
2014/06/17 PHP
一个加载js文件的小脚本
2007/06/28 Javascript
用倒置滤镜把div倒置,再把table倒置。
2007/07/31 Javascript
Mootools 1.2教程 Tooltips
2009/09/15 Javascript
jquery实现奇偶行赋值不同css值
2012/02/17 Javascript
ie与ff下的event事件使用介绍
2013/11/25 Javascript
JavaScript中统计Textarea字数并提示还能输入的字符
2014/06/10 Javascript
javascript鼠标滑动评分控件完整实例
2015/05/13 Javascript
js实现模拟银行卡账号输入显示效果
2015/11/18 Javascript
Web程序员必备的7个JavaScript函数
2016/06/14 Javascript
简单实现JS上传图片预览功能
2017/04/14 Javascript
Vue唯一可以更改vuex实例中state数据状态的属性对象Mutation的讲解
2019/01/18 Javascript
IE浏览器下JS脚本提交表单后,不能自动提示问题解决方法
2019/06/04 Javascript
JavaScript实现手机号码 3-4-4格式并控制新增和删除时光标的位置
2020/06/02 Javascript
关于JavaScript数组去重的一些理解汇总
2020/09/10 Javascript
vue实现div可拖动位置也可改变盒子大小的原理
2020/09/16 Javascript
Python的爬虫程序编写框架Scrapy入门学习教程
2016/07/02 Python
Python反射用法实例简析
2017/12/22 Python
基于DataFrame筛选数据与loc的用法详解
2018/05/18 Python
处理textarea中的换行和空格
2019/12/12 HTML / CSS
Crucial英睿达法国官网:内存条及SSD固态硬盘升级
2018/07/13 全球购物
XML文档定义有几种形式?它们之间有何本质区别?解析XML文档有哪几种方式?
2016/01/12 面试题
最新计算机专业自荐信
2013/10/16 职场文书
大学毕业生文采飞扬的自我鉴定
2013/12/03 职场文书
干部下基层实施方案
2014/03/14 职场文书
项目建议书怎么写
2014/05/15 职场文书
机械专业毕业生自我鉴定2014
2014/10/04 职场文书
2014年小学图书室工作总结
2014/12/09 职场文书
市场部岗位职责范本
2015/04/15 职场文书
草房子读书笔记
2015/06/29 职场文书
班干部学习委员竞选稿
2015/11/20 职场文书
速龙x4-860k处理器相当于i几
2022/04/20 数码科技
ORACLE中dbms_output.put_line输出问题的解决过程
2022/06/28 Oracle