Python Flask,单元测试案例,unittest

向右看齐 2022-03-31 12:38 429阅读 0赞

demo.py(Flask,定义视图):

  1. # coding:utf-8
  2. from flask import Flask, request, jsonify
  3. app = Flask(__name__)
  4. @app.route("/dologin", methods=["POST"])
  5. def login():
  6. """登录"""
  7. name = request.form.get("name")
  8. password = request.form.get("password")
  9. if not all([name, password]):
  10. # 如果name或password中有一个为空或者都为空
  11. return jsonify(code=1, message=u"参数不完整")
  12. if name == "admin" and password =="python":
  13. return jsonify(code=0, message=u"OK")
  14. else:
  15. return jsonify(code=2, message=u"用户名或密码错误")
  16. if __name__ == '__main__':
  17. app.run()

test.py(unittest,单元测试案例,测试Flask视图函数):

  1. # coding:utf-8
  2. import unittest
  3. from demo import app
  4. import json
  5. class TestLogin(unittest.TestCase):
  6. """定义测试案例"""
  7. # 测试代码执行之前调用 (方法名固定)
  8. def setUp(self):
  9. """在执行具体的测试方法前,先被调用"""
  10. # 可以使用python的http标准客户端进行测试
  11. # urllib urllib2 requests
  12. # app.config['TESTING'] = True # 指定app在测试模式下运行
  13. app.testing = True # 指定app在测试模式下运行。 (测试模式下,视图中的意外异常可以正常打印显示出来)
  14. # 使用flask提供的测试客户端进行测试 (Flask客户端可以模拟发送请求)
  15. self.client = app.test_client()
  16. # 测试代码。 (方法名必须以"test_"开头)
  17. def test_empty_name_password(self):
  18. """测试模拟场景,用户名或密码不完整"""
  19. # 使用Flask客户端向后端发送post请求, data指明发送的数据,会返回一个响应对象
  20. response = self.client.post("/dologin", data={})
  21. # respoonse.data是响应体数据
  22. resp_json = response.data
  23. # 按照json解析
  24. resp_dict = json.loads(resp_json)
  25. # 使用断言进行验证
  26. self.assertIn("code", resp_dict)
  27. code = resp_dict.get("code")
  28. self.assertEqual(code, 1)
  29. # 测试只传name
  30. response = self.client.post("/dologin", data={"name": "admin"})
  31. # respoonse.data是响应体数据
  32. resp_json = response.data
  33. # 按照json解析
  34. resp_dict = json.loads(resp_json)
  35. # 使用断言进行验证
  36. self.assertIn("code", resp_dict)
  37. code = resp_dict.get("code")
  38. self.assertEqual(code, 1)
  39. # 测试代码。 (方法名必须以"test_"开头)
  40. def test_wrong_name_password(self):
  41. """测试用户名或密码错误"""
  42. response = self.client.post("/dologin", data={"name": "admin", "password": "xxx"})
  43. # respoonse.data是响应体数据
  44. resp_json = response.data
  45. # 按照json解析
  46. resp_dict = json.loads(resp_json)
  47. # 使用断言进行验证
  48. self.assertIn("code", resp_dict)
  49. code = resp_dict.get("code")
  50. self.assertEqual(code, 2)
  51. if __name__ == '__main__':
  52. unittest.main() # 进行测试

发表评论

表情:
评论列表 (有 0 条评论,429人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Python 单元测试库 Mock unittest

    Mock是什么 Mock这个词在英语中有模拟的这个意思,因此我们可以猜测出这个库的主要功能是模拟一些东西。准确的说,Mock是Python中一个用于支持单元测试的库,它的