详解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深入学习之内存管理
Aug 31 Python
利用Python+Java调用Shell脚本时的死锁陷阱详解
Jan 24 Python
python实现m3u8格式转换为mp4视频格式
Feb 28 Python
django项目搭建与Session使用详解
Oct 10 Python
解决Python中pandas读取*.csv文件出现编码问题
Jul 12 Python
flask框架单元测试原理与用法实例分析
Jul 23 Python
使用Python来做一个屏幕录制工具的操作代码
Jan 18 Python
Python中全局变量和局部变量的理解与区别
Feb 07 Python
Python将QQ聊天记录生成词云的示例代码
Feb 10 Python
浅谈Python中的函数(def)及参数传递操作
May 25 Python
python脚本框架webpy模板赋值实现
Nov 20 Python
python使用pycharm安装pyqt5以及相关配置
Apr 22 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
session 的生命周期是多长
2006/10/09 PHP
php join函数应用
2011/05/04 PHP
PHP正确配置mysql(apache环境)
2011/08/28 PHP
PHP开发中常见的安全问题详解和解决方法(如Sql注入、CSRF、Xss、CC等)
2014/04/21 PHP
PHP实现采集抓取淘宝网单个商品信息
2015/01/08 PHP
php图片水印添加、压缩、剪切的封装类实现
2020/04/18 PHP
详解 PHP加密解密字符串函数附源码下载
2015/12/18 PHP
PHP快速生成各种信息提示框的方法
2016/02/03 PHP
对于Laravel 5.5核心架构的深入理解
2018/02/22 PHP
Thinkphp5 如何隐藏入口文件index.php(URL重写)
2019/10/16 PHP
JavaScript 学习技巧
2010/02/17 Javascript
javascript中负数算术右移、逻辑右移的奥秘探索
2013/10/17 Javascript
JS获取html对象的几种方式介绍
2013/12/05 Javascript
在Python中使用glob模块查找文件路径的方法
2015/06/17 Javascript
在Node.js中使用HTTP上传文件的方法
2015/06/23 Javascript
JavaScript制作简单的日历效果
2016/03/10 Javascript
常用的javascript设计模式
2017/01/11 Javascript
Vue.js上下滚动加载组件的实例代码
2017/07/17 Javascript
微信小程序实现签到功能
2018/10/31 Javascript
vue 实现cli3.0中使用proxy进行代理转发
2019/10/30 Javascript
vue中的循环对象属性和属性值用法
2020/09/04 Javascript
绘制微信小程序验证码功能的实例代码
2021/01/05 Javascript
Python中利用sorted()函数排序的简单教程
2015/04/27 Python
详解Python各大聊天系统的屏蔽脏话功能原理
2016/12/01 Python
pandas取出重复数据的方法
2019/07/04 Python
Python socket非阻塞模块应用示例
2019/09/12 Python
浅谈ROC曲线的最佳阈值如何选取
2020/02/28 Python
python在一个范围内取随机数的简单实例
2020/08/16 Python
用gpu训练好的神经网络,用tensorflow-cpu跑出错的原因及解决方案
2021/03/03 Python
Elemis美国官网:英国的第一豪华护肤品牌
2018/03/15 全球购物
Skyscanner澳大利亚:全球领先的旅游搜索网站
2018/03/24 全球购物
英国婴儿及儿童产品商店:TigerParrot
2019/03/04 全球购物
西式婚礼证婚词
2014/01/12 职场文书
个人查摆问题整改措施
2014/10/04 职场文书
房地产工程部经理岗位职责
2015/04/09 职场文书
优质服务标语口号
2015/12/26 职场文书