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": ""})

        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

python-Web-flask-蓝图和单元测试的更多相关文章

  1. python web -- flask

    Flask是一个简洁的 Python_web 框架. 零. virtualenv 虚拟环境配置. $ easy_install pip $ pip install virtualenv $ virtu ...

  2. Python Web Flask源码解读(一)——启动流程

    关于我 一个有思想的程序猿,终身学习实践者,目前在一个创业团队任team lead,技术栈涉及Android.Python.Java和Go,这个也是我们团队的主要技术栈. Github:https:/ ...

  3. Python Web Flask源码解读(二)——路由原理

    关于我 一个有思想的程序猿,终身学习实践者,目前在一个创业团队任team lead,技术栈涉及Android.Python.Java和Go,这个也是我们团队的主要技术栈. Github:https:/ ...

  4. Python Web Flask源码解读(四)——全局变量

    关于我 一个有思想的程序猿,终身学习实践者,目前在一个创业团队任team lead,技术栈涉及Android.Python.Java和Go,这个也是我们团队的主要技术栈. Github:https:/ ...

  5. Python Web Flask源码解读(三)——模板渲染过程

    关于我 一个有思想的程序猿,终身学习实践者,目前在一个创业团队任team lead,技术栈涉及Android.Python.Java和Go,这个也是我们团队的主要技术栈. Github:https:/ ...

  6. Python框架学习之Flask中的蓝图与单元测试

    因为Flask框架的集成度很低,随着Flask项目文件的增多,会导致不太好管理.但如果对一个项目进行模块化管理的,那样子管理起来就会特别方便.而在Flask中刚好就提供了这么一个特别好用的工具蓝图(B ...

  7. python三大web框架Django,Flask,Flask,Python几种主流框架,13个Python web框架比较,2018年Python web五大主流框架

    Python几种主流框架 从GitHub中整理出的15个最受欢迎的Python开源框架.这些框架包括事件I/O,OLAP,Web开发,高性能网络通信,测试,爬虫等. Django: Python We ...

  8. python web框架Flask——csrf攻击

    CSRF是什么? (Cross Site Request Forgery, 跨站域请求伪造)是一种网络的攻击方式,它在 2007 年曾被列为互联网 20 大安全隐患之一,也被称为“One Click ...

  9. Django,Flask,Tornado三大框架对比,Python几种主流框架,13个Python web框架比较,2018年Python web五大主流框架

    Django 与 Tornado 各自的优缺点Django优点: 大和全(重量级框架)自带orm,template,view 需要的功能也可以去找第三方的app注重高效开发全自动化的管理后台(只需要使 ...

  10. virtualenv 环境下 Nginx + Flask + Gunicorn+ Supervisor 搭建 Python Web

    在这篇文章里,我们将搭建一个简单的 Web 应用,在虚拟环境中基于 Flask 框架,用 Gunicorn 做 wsgi 容器,用 Supervisor 管理进程,然后使用 Python 探针来监测应 ...

随机推荐

  1. Selenium(八)测试用例的设计与模块化

    一.设计测试用例 1.分析我之前写的登录脚本: from selenium import webdriver import time from selenium.webdriver.common.ac ...

  2. IP分组

    IP 分组为了更准确地讨论 I n t e r n e t协议处理,我们必须定义一些名词.图 显示了在不同的I n t e r n e t层之间传递数据时用来描述数据的名词.我们把传输协议交给 I P ...

  3. python utf8

    1. # coding:utf-8 作用是定义源代码的编码. 如果没有定义, 此源码中是不可以包含中文字符串的.PEP 0263 -- Defining Python Source Code Enco ...

  4. mongo operations

    Check Mongo Operate Logs db.getCollection('oplog.rs').find({'ns':{$in:['sxa.sxacc-organizations','sx ...

  5. 聊聊我理解的ANSI C、ISO C、GNU C、POSIX C

    几句话了解C标准之间的关系 C语言标准 早期的计算机汇编语言是与机器平台紧密耦合的,为了屏蔽这种耦合,增加代码的可移植性,C语言随机出现. 二十世纪八十年代,为了避免各开发厂商用的C语言语法产生差异, ...

  6. 浅析pagehelper分页原理(转)

    之前项目一直使用的是普元框架,最近公司项目搭建了新框架,主要是由公司的大佬搭建的,以springboot为基础.为了多学习点东西,我也模仿他搭了一套自己的框架,但是在完成分页功能的时候,确遇到了问题. ...

  7. 001_Python安装

    1. 判断电脑是否已经安装python,电脑->运行->输入:python 2. 如果没有安装,去官网下载:https://www.python.org/downloads/ 3. 安装过 ...

  8. leetcode解题报告(7):Valid Parentheses

    描述 Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine if the i ...

  9. .netcore signalR 实时消息推送

    服务器端引入包 Install-Package Microsoft.AspNetCore.SignalR客户端引入包  npm install @aspnet/signalr <template ...

  10. npm传参技巧

    博主今天遇到一个问题,使用vue-cli-serve,想要用shelljs来执行vue-cli-serve,动态给它传“--port xxxx"但是发现”--port“怎么传都穿不进去,后面 ...