Flask 单元测试 unittest
import unittest 单元测试
app = Flask(__name__)
--------------------------------------------
import unitest
class TestClass(unittest.TestCase):
#该方法会首先执行,相当于做测试前的准备工作
def setUp(self):
pass
#该方法会在测试代码执行完后执行,相当于做测试后的扫尾工作
def tearDown(self):
pass
#测试代码
def test_app_exists(self):
pass
def num_div(num1,num2):
#assert 断言 后面是一个表达式 如果表示返回真,则断言成功,程序能够继续往下执行
#如果表达式返回假,则断言失败,assert会抛出异常AssertionError 终止程序继续往下执行
assert isinstance(num1,int)
assert isinstance(num2,int)
assert num2 !=
print(num1 / num2)
if __name__ == '__main__':
num_div(,)
# -*- coding: utf- -*-
# @Time : // :
# @Author : yanxiatingyu
# @File : unittest_study.py
# @Software: PyCharm
import unittest
from flask import Flask
from flask import request
from flask import jsonify
app = Flask(__name__)
@app.route('/')
def index():
return 'test'
@app.route('/login', methods=["POST"])
def login():
user_name = request.form.get("user_name")
user_pwd = request.form.get("user_pwd")
print(request.form)
print(request.args)
resp = ''
if not all([user_name, user_pwd]):
resp = {
,
"message": "invalid params"
}
return jsonify(resp)
if user_pwd == 'a' and user_name == 'a':
resp = {
,
"msessage": "login success"
}
else:
resp = {
,
"message": "login faild"
}
return jsonify(resp)
if __name__ == '__main__':
app.run(debug=True)
import unittest
from unittest_study import app
import json
class LoginTest(unittest.TestCase):
"""构造单元测试案例"""
def test_empty_user_name_password(self):
"""测试用户名密码不完整的情况"""
# 创建进行web请求的客户端,使用flask提供的
client = app.test_client()
# 利用client客户端模拟发送web请求
ret = client.post("/login", data={
"user_name": "a",
"user_pwd": "a"
})
# ret 是视图返回的响应对象
# data 属性是响应体的数据
resp = ret.data
# 因为login视图返回的json字符串
#
resp = json.loads(resp)
# 拿到返回值后进行断言测试
self.assertIn("code", resp) # code 是否 包含在resp里面
self.assertEqual(resp[)
if __name__ == '__main__':
unittest.main()
-------------------------------------------------
from flask_mail import Mail,Message
# 配置邮件: 服务器 、 端口 、 传输层安全协议 、 邮箱名 、密码
app.config.update(
DEBUG=True,
MAIL_SERVER='smtp.qq.com',
MAIL_PROT=,
MAIL_USE_TLS=True,
MAIL_USERNAME='799209502@qq.com',
MAIL_PASSWORD='cyfgpsjasdqibaii'
)
#//MAIL_PASSWORD 授权码
#IMAP/SMTP服务 (什么是 IMAP,它又是如何设置?) 开启QQ邮箱此服务 获取授权码
#由于QQ邮箱不支持非加密的协议,那么使用加密协议,分为两种加密协议,选择其中之一即可
#.mail_use_tls 端口号是587
#.mail_use_ssl 端口号是465
#我选择的mail_use_tls 协议,所以MAIL_USE_TLS设置为True,端口号587
mail = Mail(app)
import json
@app.route('/')
def index():
try:
# sender 发送方,recipients 接收方列表
msg = Message("This is a test !", sender='799209502@qq.com', recipients=["changanmingji@126.com"])
# 邮箱内容
msg.body = "Flask test mail !"
# 发送邮件
mail.send(msg)
, {
"Content-Type": "application/json"
}
except Exception as e:
print(e)
,{
"Content-Type":"application/json"
}
# -*- coding: utf- -*-
# @Time : // :
# @Author : yanxiatingyu
# @File : test.py.py
# @Software: PyCharm
import unittest
from unittest_study import app
import json
class LoginTest(unittest.TestCase):
"""构造单元测试案例"""
def setUp(self):
"""在进行测试之前,先被执行"""
# 设置flask工作在测试模式下
# app.config['TESTINg'] = True
# 或
app.testing = True# 打开后程序 具体出现什么错误等,告诉你细节问题,不开就不会体现细节问题
# 创建进行web请求的客户端,使用flask提供的
self.client = app.test_client()
def test_empty_user_name_password(self):
"""测试用户名密码不完整的情况"""
# 利用client客户端模拟发送web请求
ret = self.client.post("/login", data={
"user_name": "a",
"user_pwd": "a"
})
# ret 是视图返回的响应对象
# data 属性是响应体的数据
resp = ret.data
# 因为login视图返回的json字符串
#
resp = json.loads(resp)
# 拿到返回值后进行断言测试
self.assertIn("code", resp) # code 是否 包含在resp里面
# 是否相等
self.assertEqual(resp[)
def test_wrong_user_name_password(self):
"""测试用户名或密码错误"""
ret = self.client.post('/login', data={
"user_name": 'b',
"user_pwd": 'b'
})
resp = ret.data
resp = json.loads(resp)
self.assertIn("code", resp)
self.assertEqual(resp[)
if __name__ == '__main__':
unittest.main()
# -*- coding: utf- -*-
# @Time : // :
# @Author : yanxiatingyu
# @File : app.py
# @Software: PyCharm
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
class Config(object):
"""配置参数"""
# sqlalchemy 配置参数
SQLALCHEMY_DATABASE_URI = "mysql://root:@127.0.0.1:3306/test"
# 设置sqlalchemy自动跟踪数据库
SQLALCHEMY_TRACK_MODIFICATIONS = True
app.config.from_object(Config)
db = SQLAlchemy(app)
db.init_app(app)
class User(db.Model):
"""用户表"""
__tablename__ = "tbl_user"
id = db.Column(db.Integer, primary_key=True) # 指明主键
name = db.Column(db.String())
email = db.Column(db.String())
def __repr__(self):
return "User object : name = %s " % self.name
if __name__ == '__main__':
db.drop_all()
db.create_all()
user1 = User(**{
"name": "姓名1",
"email": "邮箱1"
})
user2 = User(**{
"name": "姓名2",
"email": "邮箱2"
})
user3 = User(name="姓名3", email="邮箱3")
# db.session.add(user1)
# or
db.session.add_all([user1, user2, user3])
db.session.commit()
# -*- coding: utf- -*-
# @Time : // :
# @Author : yanxiatingyu
# @File : test.py
# @Software: 数据库 单元测试
import unittest
from app import User, db, app
class DataBaseTeset(unittest.TestCase):
"""测试用户的数据库操作"""
def setUp(self):
app.testing = True
# SQLALCHEMY_DATABASE_URI = "mysql://root:@127.0.0.1:3306/test"
# 测试 数据库的修改
app.config["SQLALCHEMY_DATABASE_URI"] = "mysql://root:@127.0.0.1:3306/test"
def test_add_user(self):
user = User(**{
"name": "姓名4",
"email": '邮箱4'
})
db.session.add(user)
db.session.commit()
res = User.query.filter_by(name="姓名1").first()
self.assertIsNotNone(res)
def tearDown(self):
"""在所有的测试执行后 执行,通过用来进行清理操作"""
db.session.remove()#删除数据,和连接状态
# db.drop_all() 删除数据库表,慎用
直接运行
Flask 单元测试 unittest的更多相关文章
- flask 单元测试
程序开发过程中,代码是为了完成需求,当代码编译通过后,能不能保证功能的正常实现,需要我们编写测试代码,模拟程序运行过程,检验功能是否符合预期. 单元测试主要面向一些功能单一的模块进行. 单元测试,实际 ...
- python_单元测试unittest
Python自带一个单元测试框架是unittest模块,用它来做单元测试,它里面封装好了一些校验返回的结果方法和一些用例执行前的初始化操作. 步骤1:首先引入unittest模块--import un ...
- python单元测试unittest
单元测试作为任何语言的开发者都应该是必要的,因为时隔数月后再回来调试自己的复杂程序时,其实也是很崩溃的事情.虽然会很快熟悉内容,但是修改和 调试将是一件痛苦的事情,如果你在修改了代码后出现问题的话,而 ...
- [转]python单元测试unittest
单元测试作为任何语言的开发者都应该是必要的,因为时隔数月后再回来调试自己的复杂程序时,其实也是很崩溃的事情.虽然会很快熟悉内容,但是修改和调试将是一件痛苦的事情,如果你在修改了代码后出现问题的话,而单 ...
- 单元测试-unittest
一.简介 unittest单元测试框架可组织执行测试用例,并且提供了丰富的断言方法,判断测试用例是否通过,最终生成测试结果. 二.属性介绍 1.unittest模块的各个属性 unittest.Tes ...
- Python单元测试unittest【转自https://www.cnblogs.com/feng0815/p/8045850.html】
[转自https://www.cnblogs.com/feng0815/p/8045850.html] Python中有一个自带的单元测试框架是unittest模块,用它来做单元测试,它里面封装好了一 ...
- Python单元测试unittest - 单元测试框架
一.unittest简介 unitest单元测试框架最初是有JUnit的启发,它支持测试自动化,共享测试的设置和关闭代码,将测试聚合到集合中,以及测试与报告框架的独立性. 二.unittest相关概念 ...
- Python单元测试--unittest(一)
unittest模块是Python中自带的一个单元测试模块,我们可以用来做代码级的单元测试. 在unittest模块中,我们主要用到的有四个子模块,他们分别是: 1)TestCase:用来写编写逐条的 ...
- selenium自动化测试、Python单元测试unittest框架以及测试报告和日志输出
部分内容来自:https://www.cnblogs.com/klb561/p/8858122.html 一.基础介绍 核心概念:test case, testsuite, TestLoder,Tex ...
随机推荐
- More than one file was found with OS independent path 錯誤
More than one file was found with OS independent path 'lib/armeabi/libmrpoid.so',. 翻譯過來就是:在操作系統的獨立目錄 ...
- Oracle不能连接故障排除[TNS-12541: TNS: 无监听程序]
1. 情况:Oracle安装后使用的好好的,放假关机后重新开机居然发现不能正常连线,客户报错:TNS-12541: TNS: 无监听程序 2. 检查: 1. 服务器上Oracle启动正 ...
- Python 编码的一些问题
>>> ord('中') 20013 >>> chr(65) 'A' >>> chr(20013) '中' - Python文件默认是UTF-8编 ...
- Promise实现ajax
利用Promise实现ajax GET function getAjax(url) { return new Promise((resolved,rejected)=>{ //创建ajax对象 ...
- gentoo qt-creator no examples
参考 [SOLVED] qtcreator: examples are missing https://forums.gentoo.org/viewtopic-t-1092826-highlight- ...
- Quick Search Articles in My Blog
=== Quickly Search Articles in My Blog: === 本文介绍了如何快速在主流搜索引擎搜索本专栏内文章的方法. Use Google's Search : pres ...
- 佳鑫:信息流广告CTR一样高,哪条文案转化率更好?
在优化信息流广告的过程中,你有没有遇到这样的帐户? 投了几个AB方案,点击率好不容易上去了,但转化率还是有的高.有的低! 这儿就有这么一个为难的案例: 一个广告主计划向有意愿在北京预订酒店的用户投放信 ...
- Flutter环境搭建
本文介绍mac上搭建Flutter环境 1.Flutter官方提供中国地区镜像地址:https://github.com/flutter/flutter/wiki/Using-Flutter-in-C ...
- 手机APP测试之monkey
Monkey测试是一种为了测试软件稳定性.健壮性的快速有效的方法,Monkey程序由Android系统自带,使用Java语言写成.本此由于公司APP产品所需,用monkey进行稳定性测试,下面将本次使 ...
- Nginx与ftp服务器
使用Nginx搭建ftp服务器