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的更多相关文章

  1. flask 单元测试

    程序开发过程中,代码是为了完成需求,当代码编译通过后,能不能保证功能的正常实现,需要我们编写测试代码,模拟程序运行过程,检验功能是否符合预期. 单元测试主要面向一些功能单一的模块进行. 单元测试,实际 ...

  2. python_单元测试unittest

    Python自带一个单元测试框架是unittest模块,用它来做单元测试,它里面封装好了一些校验返回的结果方法和一些用例执行前的初始化操作. 步骤1:首先引入unittest模块--import un ...

  3. python单元测试unittest

    单元测试作为任何语言的开发者都应该是必要的,因为时隔数月后再回来调试自己的复杂程序时,其实也是很崩溃的事情.虽然会很快熟悉内容,但是修改和 调试将是一件痛苦的事情,如果你在修改了代码后出现问题的话,而 ...

  4. [转]python单元测试unittest

    单元测试作为任何语言的开发者都应该是必要的,因为时隔数月后再回来调试自己的复杂程序时,其实也是很崩溃的事情.虽然会很快熟悉内容,但是修改和调试将是一件痛苦的事情,如果你在修改了代码后出现问题的话,而单 ...

  5. 单元测试-unittest

    一.简介 unittest单元测试框架可组织执行测试用例,并且提供了丰富的断言方法,判断测试用例是否通过,最终生成测试结果. 二.属性介绍 1.unittest模块的各个属性 unittest.Tes ...

  6. Python单元测试unittest【转自https://www.cnblogs.com/feng0815/p/8045850.html】

    [转自https://www.cnblogs.com/feng0815/p/8045850.html] Python中有一个自带的单元测试框架是unittest模块,用它来做单元测试,它里面封装好了一 ...

  7. Python单元测试unittest - 单元测试框架

    一.unittest简介 unitest单元测试框架最初是有JUnit的启发,它支持测试自动化,共享测试的设置和关闭代码,将测试聚合到集合中,以及测试与报告框架的独立性. 二.unittest相关概念 ...

  8. Python单元测试--unittest(一)

    unittest模块是Python中自带的一个单元测试模块,我们可以用来做代码级的单元测试. 在unittest模块中,我们主要用到的有四个子模块,他们分别是: 1)TestCase:用来写编写逐条的 ...

  9. selenium自动化测试、Python单元测试unittest框架以及测试报告和日志输出

    部分内容来自:https://www.cnblogs.com/klb561/p/8858122.html 一.基础介绍 核心概念:test case, testsuite, TestLoder,Tex ...

随机推荐

  1. 微信公众号生成带参数的二维码asp源码下载

    晚上闲着没事,一个朋友联系,让帮忙写一个微信公众号利用asp生成带参数的二维码,别人扫了后如果已经关注过该公众号的,则直接进入公众号里,如果没关注则提示关注,关注后自动把该微信用户资料获取到并且保存入 ...

  2. Git全面应用

    Git是一个免费的开源分布式版本控制系统,旨在快速高效地处理从小型到大型项目的所有事务. Git易于学习,占地面积小,具有闪电般快速的性能. 它超越了Subversion,CVS,Perforce和C ...

  3. PHP Yii2.0PHPexecl导出。

    use phpoffice\phpexcel; public function actionExport(){ $objPHPExcel = new \phpexcel; $objPHPExcel - ...

  4. Windows 2008 R2 域控制器防止意外删除现有OU的设置

    Windows 2008 R2 域控制器防止意外删除现有OU(组织单元)的设置:1.以管理员身份运行Active Directory的Windows PowerShell模块: 2.键入以下命令来检查 ...

  5. spark各种模式提交任务介绍

    前言 本文章部分内容翻译自: http://spark.apache.org/docs/latest/submitting-applications.html 应用提交 Spark的bin目录中的sp ...

  6. js动态监听dom变化

    原生js 动态监听dom变化,根据不同的类型绑定不同的处理逻辑 // Firefox和Chrome早期版本中带有前缀   var MutationObserver = window.MutationO ...

  7. myeclipse2017+ssm+tomcat8+jdk1.8

    练习上手ssm项目 工具:myeclipse2017,spring4,jdk1.8,tomcat8 搭建链接:https://www.cnblogs.com/cuglkb/p/6734666.html ...

  8. lnmp之Nginx配置https加密访问

    配置lnmp之Nginx网站支持https加密访问 注: 1. 这里拿购买的(pxsnx.pxjy.com)证书来做样例 证书文件共有三个---> (pxsnxg.pxjy.com_ca.crt ...

  9. [Go] 开始试探一门新语言的五点思考 - Golang

    1.如果在其他语言环境中写的代码很烂,那么换一门语言很可能情况更糟,因为是涉及到基本功.工程能力和心思逻辑. 2.一定要了解语言解决的问题(比如:多核并发机制性能高.省机器.简洁易学.资料少),优势是 ...

  10. PHP5.5.38版本Zend Guard loader for 5.5安装(详细)

    第一次在博客园写东西记录自己,不,可以说第一次在网上写东西记录自己,我只是个菜鸟,具体的不太懂, 但是作为一个菜鸟我肯定把我遇到的问题给详细的表述出来,大神勿喷.在安装Zend Guard loade ...