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": ""}) 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-蓝图和单元测试的更多相关文章
- python web -- flask
Flask是一个简洁的 Python_web 框架. 零. virtualenv 虚拟环境配置. $ easy_install pip $ pip install virtualenv $ virtu ...
- Python Web Flask源码解读(一)——启动流程
关于我 一个有思想的程序猿,终身学习实践者,目前在一个创业团队任team lead,技术栈涉及Android.Python.Java和Go,这个也是我们团队的主要技术栈. Github:https:/ ...
- Python Web Flask源码解读(二)——路由原理
关于我 一个有思想的程序猿,终身学习实践者,目前在一个创业团队任team lead,技术栈涉及Android.Python.Java和Go,这个也是我们团队的主要技术栈. Github:https:/ ...
- Python Web Flask源码解读(四)——全局变量
关于我 一个有思想的程序猿,终身学习实践者,目前在一个创业团队任team lead,技术栈涉及Android.Python.Java和Go,这个也是我们团队的主要技术栈. Github:https:/ ...
- Python Web Flask源码解读(三)——模板渲染过程
关于我 一个有思想的程序猿,终身学习实践者,目前在一个创业团队任team lead,技术栈涉及Android.Python.Java和Go,这个也是我们团队的主要技术栈. Github:https:/ ...
- Python框架学习之Flask中的蓝图与单元测试
因为Flask框架的集成度很低,随着Flask项目文件的增多,会导致不太好管理.但如果对一个项目进行模块化管理的,那样子管理起来就会特别方便.而在Flask中刚好就提供了这么一个特别好用的工具蓝图(B ...
- python三大web框架Django,Flask,Flask,Python几种主流框架,13个Python web框架比较,2018年Python web五大主流框架
Python几种主流框架 从GitHub中整理出的15个最受欢迎的Python开源框架.这些框架包括事件I/O,OLAP,Web开发,高性能网络通信,测试,爬虫等. Django: Python We ...
- python web框架Flask——csrf攻击
CSRF是什么? (Cross Site Request Forgery, 跨站域请求伪造)是一种网络的攻击方式,它在 2007 年曾被列为互联网 20 大安全隐患之一,也被称为“One Click ...
- Django,Flask,Tornado三大框架对比,Python几种主流框架,13个Python web框架比较,2018年Python web五大主流框架
Django 与 Tornado 各自的优缺点Django优点: 大和全(重量级框架)自带orm,template,view 需要的功能也可以去找第三方的app注重高效开发全自动化的管理后台(只需要使 ...
- virtualenv 环境下 Nginx + Flask + Gunicorn+ Supervisor 搭建 Python Web
在这篇文章里,我们将搭建一个简单的 Web 应用,在虚拟环境中基于 Flask 框架,用 Gunicorn 做 wsgi 容器,用 Supervisor 管理进程,然后使用 Python 探针来监测应 ...
随机推荐
- JDK源码那些事儿之我眼中的HashMap
源码部分从HashMap说起是因为笔者看了很多遍这个类的源码部分,同时感觉网上很多都是粗略的介绍,有些可能还不正确,最后只能自己看源码来验证理解,写下这篇文章一方面是为了促使自己能深入,另一方面也是给 ...
- PHP批量更新MYSQL中的数据
原文链接:https://blog.csdn.net/wuming19900801/article/details/62893429 $sql = "update newhouse_clic ...
- temp数据预处理--以24h为周期的序列
1.按照周期来截取数据 从数据库加载下来的是以5min取一次mean()的列,因此24h应取了24*60/5=288次数据 首先把这8352个数据(最后一个以倒数第二个填充)改成288*30的形式 t ...
- Interleaving String (DP)
Given s1, s2, s3, find whether s3 is formed by the interleaving of s1 and s2. For example, Given:s1 ...
- Js 提交 form 表单
本文主要讲如何使用Js提交表单,在使用ajax进行异步验证的多数情况下,需要使用Js提交表单,以下简单说几种提交表单的方式: 1.document.getElementById("formI ...
- 彻底搞懂prototype和__proto__
prototype是函数特有的属性,是Function的静态属性:__proto__是对象特有的属性. 因为函数本身是一种对象,所以函数既有prototype属性也有__proto__属性. 当函数使 ...
- DP(第二版)
第一版请见:直通 话不多说,直接上题 1.P1040 加分二叉树 直通 思路: 已知中序遍历,相当于一段区间了,所以我们枚举一个k,如果以k为根节点,能够将分数更新,那么这段区间的根节点就置为k,最后 ...
- pymysql基本使用
导入模块 import pymysql 连接(看一下password有没有,没有的话会怎么样,有很多参数,有些参数也是可以不传的) conn = pymysql.connect(user = &quo ...
- Python中greenlet和gevent使用示例
目录 greenlet示例 示例1,线程切换 示例2 gevent 示例1 示例2: gevent使用monkey对所有系统自带的IO操作打patch 示例3,发送请求 示例4:使用gevent的so ...
- Django基础之中间件的执行流程
当请求到达中间件以后,先按照正序执行每个注册中间件的process_request方法,process_request方法返回的值是None,就依次执行. 如果返回的值是HttpResponse对象, ...