单元测试在flask中应用

一、单元测试中的属性

assertEqual             # 如果两个值相等,则pass
assertNotEqual          # 如果两个值不相等,则pass
assertTrue              # 判断bool值为True,则pass
assertFalse             # 判断bool值为False,则pass
assertIsNone            # 不存在,则pass
assertIsNotNone         # 存在,则pass

二、登录的简单单元测试

2.1 login.py

from flask import Flask, request, jsonify
app = Flask(__name__)
@app.route("/login", methods=["POST"])
def login():
    # 接受参数
    username = request.form.get("username")
    password = request.form.get("password")
    # a = 1 / 0
    # 参数判断
    if not all([username, password]):
        resp = {
            "code": 1,
            "message": "invalid params"
        }
        return jsonify(resp)
    if username == "admin" and password == "python":
        resp = {
            "code": 0,
            "message": "login success"
        }
        return jsonify(resp)
    else:
        resp = {
            "code": 2,
            "message": "wrong username or password"
        }
        return jsonify(resp)
if __name__ == '__main__':
    app.run(debug=True)

1.2 test.py

import unittest
import json
from login import app
class LoginTest(unittest.TestCase):
    def setUp(self):
        """在进行测试之前,先被执行"""
        # 设flask工作在测试模式下
        # app.config["TESTING"] = True
        app.testing = True # 此时,若测试内容有问题,可以有问题的馆长所在.如 a = 1 / 0, 程序到此会报错,此时能捕捉到错误
        self.client = app.test_client()
    def test_empty_username_password(self):
        """测试用户名或密码错误"""
        ret = self.client.post("/login", data={})
        # ret是视图返回的响应对象,data属性是响应的数据
        resp = ret.data
        # 因为login驶入返回的是json字符串
        resp = json.loads(resp)
        # 拿到返回值后进行断言测试
        self.assertIn("code", resp)
        self.assertEqual(resp["code"], 1)
if __name__ == '__main__':
    unittest.main()

1.3 运行方式

方式一: 直接右键运行 test.py

方式二:在Terminal中输入命令:  python test.py

1.4 代码与运行截图

1.4.1 代码截图

1.4.2 运行截图

三、数据库用单元测试

 

 

 

 

 

 

posted on 2019-11-10 20:17  软饭攻城狮  阅读(201)  评论(0编辑  收藏  举报

导航