单元测试在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 运行截图
三、数据库用单元测试