flask框架单元测试原理与用法实例分析

 更新时间:2019年07月23日 10:01:56   作者:笑-笑-生  
这篇文章主要介绍了flask框架单元测试原理与用法,结合实例形式较为详细的分析了单元测试的概念、原理及基本用法,需要的朋友可以参考下

本文实例讲述了flask框架单元测试原理与用法。分享给大家供大家参考,具体如下:

为什么要测试?

Web程序开发过程一般包括以下几个阶段:[需求分析,设计阶段,实现阶段,测试阶段]。其中测试阶段通过人工或自动来运行测试某个系统的功能。目的是检验其是否满足需求,并得出特定的结果,以达到弄清楚预期结果和实际结果之间的差别的最终目的。

测试的分类:

测试从软件开发过程可以分为:单元测试、集成测试、系统测试等。在众多的测试中,与程序开发人员最密切的就是单元测试,因为单元测试是由开发人员进行的,而其他测试都由专业的测试人员来完成。所以我们主要学习单元测试。

什么是单元测试?

程序开发过程中,写代码是为了实现需求。当我们的代码通过了编译,只是说明它的语法正确,功能能否实现则不能保证。 因此,当我们的某些功能代码完成后,为了检验其是否满足程序的需求。可以通过编写测试代码,模拟程序运行的过程,检验功能代码是否符合预期。

单元测试就是开发者编写一小段代码,检验目标代码的功能是否符合预期。通常情况下,单元测试主要面向一些功能单一的模块进行。

举个例子:一部手机有许多零部件组成,在正式组装一部手机前,手机内部的各个零部件,CPU、内存、电池、摄像头等,都要进行测试,这就是单元测试。

在Web开发过程中,单元测试实际上就是一些“断言”(assert)代码。

断言就是判断一个函数或对象的一个方法所产生的结果是否符合你期望的那个结果。 python中assert断言是声明布尔值为真的判定,如果表达式为假会发生异常。单元测试中,一般使用assert来断言结果。

断言方法的使用:

断言语句类似于:

if not expression:
  raise AssertionError

常用的断言方法:

assertEqual     如果两个值相等,则pass
assertNotEqual  如果两个值不相等,则pass
assertTrue      判断bool值为True,则pass
assertFalse     判断bool值为False,则pass
assertIsNone    不存在,则pass
assertIsNotNone 存在,则pass

如何测试?

简单的测试用例:1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,987,1597,2584,4181,6765,

def fibo(x):
  if x == 0:
    resp = 0
  elif x == 1:
    resp = 1
  else:
    return fibo(x-1) + fibo(x-2)
  return resp
assert fibo(5) == 5

单元测试的基本写法:

首先,定义一个类,继承自unittest.TestCase

import unittest
class TestClass(unitest.TestCase):
  pass

其次,在测试类中,定义两个测试方法

import unittest
class TestClass(unittest.TestCase):
  #该方法会首先执行,方法名为固定写法
  def setUp(self):
    pass
  #该方法会在测试代码执行完后执行,方法名为固定写法
  def tearDown(self):
    pass

最后,在测试类中,编写测试代码

import unittest
class TestClass(unittest.TestCase):
  #该方法会首先执行,相当于做测试前的准备工作
  def setUp(self):
    pass
  #该方法会在测试代码执行完后执行,相当于做测试后的扫尾工作
  def tearDown(self):
    pass
  #测试代码
  def test_app_exists(self):
    pass

发送邮件测试:

#coding=utf-8
import unittest
from Flask_day04 import app
class TestCase(unittest.TestCase):
  # 创建测试环境,在测试代码执行前执行
  def setUp(self):
    self.app = app
    # 激活测试标志
    app.config['TESTING'] = True
    self.client = self.app.test_client()
  # 在测试代码执行完成后执行
  def tearDown(self):
    pass
  # 测试代码
  def test_email(self):
    resp = self.client.get('/')
    print resp.data
    self.assertEqual(resp.data,'Sent Succeed')

数据库测试:

#coding=utf-8
import unittest
from author_book import *
#自定义测试类,setUp方法和tearDown方法会分别在测试前后执行。以test_开头的函数就是具体的测试代码。
class DatabaseTest(unittest.TestCase):
  def setUp(self):
    app.config['TESTING'] = True
    app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root:mysql@localhost/test0'
    self.app = app
    db.create_all()
  def tearDown(self):
    db.session.remove()
    db.drop_all()
  #测试代码
  def test_append_data(self):
    au = Author(name='itcast')
    bk = Book(info='python')
    db.session.add_all([au,bk])
    db.session.commit()
    author = Author.query.filter_by(name='itcast').first()
    book = Book.query.filter_by(info='python').first()
    #断言数据存在
    self.assertIsNotNone(author)
    self.assertIsNotNone(book)

希望本文所述对大家基于flask框架的Python程序设计有所帮助。

相关文章

  • Python深度学习TensorFlow神经网络基础概括

    Python深度学习TensorFlow神经网络基础概括

    这篇文章主要为大家介绍了Python深度学习中TensorFlow神经网络基础概括,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步
    2021-10-10
  • 详解Python中的array数组模块相关使用

    详解Python中的array数组模块相关使用

    数组并不是Python中内置的标配数据结构,不过拥有array模块我们也可以在Python中使用数组结构,下面我们就来详解详解Python中的array数组模块相关使用
    2016-07-07
  • python实现从尾到头打印单链表操作示例

    python实现从尾到头打印单链表操作示例

    这篇文章主要介绍了python实现从尾到头打印单链表操作,结合实例形式分析了Python单链表的定义、判断、添加、打印等相关操作技巧,需要的朋友可以参考下
    2020-02-02
  • python3的UnicodeDecodeError解决方法

    python3的UnicodeDecodeError解决方法

    这篇文章主要介绍了python3的UnicodeDecodeError解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12
  • 浅析python的Lambda表达式

    浅析python的Lambda表达式

    在本文里我们给大家整理了关于python的Lambda表达式相关知识点以及相关实例,需要的朋友们学习下。
    2019-02-02
  • Python操作MongoDB详解及实例

    Python操作MongoDB详解及实例

    这篇文章主要介绍了Python操作MongoDB详解及实例的相关资料,需要的朋友可以参考下
    2017-05-05
  • Django中celery执行任务结果的保存方法

    Django中celery执行任务结果的保存方法

    今天小编就为大家分享一篇Django中celery执行任务结果的保存方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-07-07
  • Python应用之bin文件的制作

    Python应用之bin文件的制作

    bin是二进制文件,其用途依系统或应用而定。一种文件格式binary的缩写。这篇文章主要为大家介绍了Python如何实现bin文件的制作,需要的可以参考一下
    2023-01-01
  • Python Word实现批量替换文本并生成副本

    Python Word实现批量替换文本并生成副本

    这篇文章主要为大家详细介绍了Python Word如何实现批量替换文本并生成副本,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2024-10-10
  • python traceback捕获并打印异常的方法

    python traceback捕获并打印异常的方法

    这篇文章主要介绍了python traceback捕获并打印异常的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-08-08

最新评论