被测试视图

# coding:utf-8

from flask import Flask, request, jsonify

app = Flask(__name__)

@app.route("/login", methods=["POST"])
def login():
"""登录"""
name = request.form.get("name")
password = request.form.get("password") # "" 0 [] () {} None 在逻辑判断时都是假
if not all([name, password]):
# 表示name或password中有一个为空或者都为空
return jsonify(code=1, message=u"参数不完整") if name == "admin" and password == "admin":
return jsonify(code=0, message=u"OK")
else:
return jsonify(code=2, message=u"用户名或密码错误") if __name__ == '__main__':
app.run()

测试用例代码

# 以login.py模块的进行单元测试
import unittest
import json from login import app class BookTest(unittest.TestCase): @classmethod
def setUpClass(cls):
"""在第一次执行用例钱执行"""
cls.app = app
# 开启测试DEBUG模式,如果用例执行到哪行代码报错就会提示
cls.app.testing = True # 使用程序实例对象创建客户端
cls.client = cls.app.test_client()
print("all_before") @classmethod
def tearDownClass(cls):
"""在最后一个用例执行完后执行"""
print("all_after") def setUp(self):
"""在每次执行用例前执行"""
print("one_before") def tearDown(self):
"""在每次执行完用例后执行"""
print("one_after") def test_login_empty_name_password(self):
"""测试用户名或密码不完整的返回"""
# 用例1:测试用户名和密码均为空
# 使用客户端向接口发送POST,data为发送的数据
response = self.client.post("/login", data={}) # response.data提取响应数据
resp_json = response.data # 将json字符串解析为字典
resp_dict = json.loads(resp_json)
# 使用断言进行验证
self.assertIn("code", resp_dict)
code = resp_dict.get("code")
self.assertEqual(code, 1) # 用例2:测试只传name
response = self.client.post("/login", data={"name": "admin"})
resp_json = response.data
resp_dict = json.loads(resp_json)
self.assertIn("code", resp_dict)
code = resp_dict.get("code")
self.assertEqual(code, 1) # 用例3:测试只传password
response = self.client.post("/login", data={"password": "admin"})
resp_json = response.data
resp_dict = json.loads(resp_json)
self.assertIn("code", resp_dict)
code = resp_dict.get("code")
self.assertEqual(code, 1) def test_wrong_name_password(self):
"""测试用户名或密码错误的返回"""
# 用例4:测试用户名或密码错误
response = self.client.post("/login", data={"name": "admin", "password": "123456"})
resp_json = response.data
resp_dict = json.loads(resp_json)
self.assertIn("code", resp_dict)
code = resp_dict.get("code")
self.assertEqual(code, 2) def test_identical_name_password(self):
"""测试用户名和密码均正确的返回"""
# 用例5:测试用户名和密码均正确
response = self.client.post("/login", data={"name": "admin", "password": "admin"})
resp_json = response.data
resp_dict = json.loads(resp_json)
self.assertIn("code", resp_dict)
code = resp_dict.get("code")
self.assertEqual(code, 0)

最新文章

  1. 数据结构:优先队列 基于堆实现(python版)
  2. asp.net MVC上传图片完整方法
  3. VS2010+MVC4+Spring.NET2+NHibernate4-传统三层架构-前篇
  4. Windows10安装MongoDB
  5. c++编译错误提示及解决
  6. linux(centos6)搭建ftp服务器
  7. Mac eclipse找不到source的解决办法
  8. 小记:Quartz 当 Job 执行时间超过触发间隔时间时所发生的情况
  9. leetcode 98 Validate Binary Search Tree ----- java
  10. JAVA 基础 重新开始
  11. Java Socket 异常 Connection reset
  12. 优酷DEMO
  13. Wix学习整理(5)——安装时填写注册表
  14. python - bilibili(一)获取直播间标题
  15. [HOJ2634] How to earn more 最大权闭合子图
  16. 编写高性能的Lua代码
  17. Python爬虫【实战篇】bilibili视频弹幕提取
  18. mssql sqlserver 批量删除所有存储过程的方法分享
  19. 【转】AlphaGO Zero 原理
  20. delphi的一个公用函数库

热门文章

  1. InnoDB学习(三)之BinLog
  2. 03 - Vue3 UI Framework - 首页
  3. 关于UML类图方面的问题(连载)
  4. pipeline post指令
  5. ciscn_2019_ne_5
  6. BUUCTF pwn一分题目
  7. Excel数据导出功能
  8. atexit模块介绍
  9. centos下修改hosts文件以及生效命令
  10. Qt之QListView和QStandardItemModel用法