Flask——单元测试

测试的分类

测试从软件开发过程可以分为:
1.单元测试
对单独的代码块(例如函数)分别进行测试,以保证它们的正确性。
单元测试就是开发者编写一小段代码,检验目标代码的功能是否符合预期。
单元测试实际上就是一些“断言”(assert)代码。判断结果是布尔值。如果为True,则pass。反之,则报异常。
2.集成测试
对大量的程序单元的协同工作情况做测试
3.系统测试
同时对整个系统的正确性进行检查,而不是针对独立的片段
在众多的测试中,与程序开发人员最密切的就是单元测试,因为单元测试是由开发人员进行的,而其他测试都由专业的测试人员来完成。所以我们主要学习单元测试。

常用的断言方法:

assertEqual :如果两个值相等,则pass。
assertNotEqual:如果两个值不相等,则pass。
assertTrue:如果bool值为True,则pass。
assertFalse:如果bool值为False。则pass。
assertIsNot:不存在,则pass。
assertISNotNone:存在,则pass。

单元测试的基本写法

1.首先,定义一个类,继承自unittest.TestCase
	import unittest
	class TestClass (unittest.TestCase):
		pass
2.其次,在测试类中,定义两个测试方法:
	import unittest
	class TestClass(unittest.TestCase):

    #该方法会首先执行,方法名为固定写法
    def setUp(self):
        pass

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

    #该方法会首先执行,相当于做测试前的准备工作
    def setUp(self):
        pass

    #该方法会在测试代码执行完后执行,相当于做测试后的扫尾工作
    def tearDown(self):
        pass
    #测试代码(以test_开头)
    def test_app_exists(self):
        pass

对数据库进行测试

# 导入测试框架

import unittest

测试作者图书案例

from demo_author_book import *

# 定义测试类,模拟添加数据
class DatabaseTest(unittest.TestCase):

# 类似于初始化方法__init__,首先执行,一般用来配置基本的信息,指定数据库的连接、构建测试客户端等
def setUp(self):
    # 开启测试标记,可以帮助定位测试的信息
    # app.config['TESTING'] = True
    # 指定链接的数据库
    app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root:mysql@localhost/demo_test'
    # 创建 数据库表
    db.create_all()


# 类似于析构方法__del__,最后执行,一般用来清除数据,清除数据库会话对象
def tearDown(self):
    # 移除数据库会话对象,如果没有移除数据库会话对象,会导致在进行测试时程序一直运行,无法结束。
    db.session.remove()
    db.drop_all()

# 定义测试方法
def test_add_data(self):
   name = Author(name='wax')
   age = Book(info='18')
   db.session.add_all([name,age])
   db.session.commit()
   # 查询数据库确认数据存在
   it = Author.query.filter_by(name='wax').first()
   bk = Book.query.filter(Book.info=='18').first()
   # 使用断言
   self.assertIsNotNone(it)
   self.assertIsNotNone(bk)

猜你喜欢

转载自blog.csdn.net/weixin_43617255/article/details/83998278