zoukankan      html  css  js  c++  java
  • python-Web-flask-蓝图和单元测试

    4 蓝图和单元测试:

    能够使用代码实现蓝图对项目进行模块化

    admin=Blueprint('admin',__name__) # 创建一个蓝图对象
    
    @admin.route('/')
    
    def admin_home(): 
    
        return 'admin_home'
    
    # app内部注册
    
    app.register_blueprint(admin,url_prefix='/admin')
    
    # 注册静态目录的路由
    
    # static_admin目录设置为静态目录
    
    admin = Blueprint("admin",__name__,static_folder='static_admin')
    
    app.register_blueprint(admin,url_prefix='/admin')
    
    # static_admin 文件夹的路由设置为 /lib
    
    admin = Blueprint("admin",__name__,static_folder='static_admin',static_url_path='/lib')
    
    app.register_blueprint(admin,url_prefix='/admin')

    数据库分块

    # 注册db的函数
    def register_db(app):
        db.init_app(app)
        # 创建所有和db相关联的表
        with app.app_context():
            db.create_all()
        return db

    urls:

    # 注册数据库
    DB = register_db(app)

    迁移分块

    from flask_migrate import Migrate,MigrateCommand
    from flask_script import Manager
    
    from urls import app
    from urls import DB as db
    
    # 命令操作
    manager = Manager(app)
    # 迁移
    migrate = Migrate(app,db)
    manager.add_command('db',MigrateCommand)
    
    if __name__ == '__main__':
        manager.run()

    设置模板目录

    admin = Blueprint('admin',__name__,template_folder='my_templates')

    能够说出断言的作用

    断言就是判断一个函数或对象的一个方法所产生的结果是否符合你期望的那个结果

    能够说出实现单元测试步骤

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

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

    3 在测试类中,编写测试代码

    登录测试

    import json
    
    import unittest
    
    from demo1_login import app
    
    class LoginTest(unittest.TestCase):
    
        """为登录逻辑编写测试案例"""
    
        def setUp(self):
    
            app.testing = True
    
            self.client = app.test_client()
    
     
    
        def test_empty_username_password(self):
    
            """测试用户名与密码为空的情况[当参数不全的话,返回errcode=-2]"""
    
            response = app.test_client().post('/login', data={})
    
            json_data = response.data
    
            json_dict = json.loads(json_data)
    
     
    
            self.assertIn('errcode', json_dict, '数据格式返回错误')
    
            self.assertEqual(json_dict['errcode'], -2, '状态码返回错误')
    
            # TODO 测试用户名为空的情况
    
            # TODO 测试密码为空的情况
    
     
    
        def test_error_username_password(self):
    
            """测试用户名和密码错误的情况[当登录名和密码错误的时候,返回 errcode = -1]"""
    
            response = app.test_client().post('/login', data={"username": "aaaaa", "password": "12343"})
    
            json_data = response.data
    
            json_dict = json.loads(json_data)
    
            self.assertIn('errcode', json_dict, '数据格式返回错误')
    
            self.assertEqual(json_dict['errcode'], -1, '状态码返回错误')
    
            # TODO 测试用户名错误的情况
    
            # TODO 测试密码错误的情况
    
     
    
    if __name__ == '__main__':
    
        unittest.main()

    能够说出单元测试所执行方法的定义规则

    #该方法会首先执行,相当于做测试前的准备工作
    
        def setUp(self):
    
            pass
    
        #该方法会在测试代码执行完后执行,相当于做测试后的扫尾工作
    
        def tearDown(self):
    
            pass
    
        #测试代码
    
        def test_app_exists(self):
    
            pass
  • 相关阅读:
    andrew ng 学习
    360一些笔试题
    安装visual studio2010提示“Windows Installer 服务不可用”的解决办法
    算法学习从赌钱游戏看PageRank算法
    jQuery Masonry 一个 jQuery动态网格布局的插件
    国内HTML5前端开发框架汇总
    Windows Performance Monitor 学习笔记
    ThinkPad预装win8系统机型安装win7系统的操作指导
    jQuery的Ajax的自动完成功能控件
    JavaScript的Forms验证Parsley.js
  • 原文地址:https://www.cnblogs.com/person1-0-1/p/11400756.html
Copyright © 2011-2022 走看看