Python Flask,ユニットテストケース,unittest
2885 ワード
demo.py(Flask,定義ビュー):
# coding:utf-8
from flask import Flask, request, jsonify
app = Flask(__name__)
@app.route("/dologin", methods=["POST"])
def login():
""" """
name = request.form.get("name")
password = request.form.get("password")
if not all([name, password]):
# name password
return jsonify(code=1, message=u" ")
if name == "admin" and password =="python":
return jsonify(code=0, message=u"OK")
else:
return jsonify(code=2, message=u" ")
if __name__ == '__main__':
app.run()
test.py(unittest、ユニットテストケース、Flaskビュー関数のテスト):
# coding:utf-8
import unittest
from demo import app
import json
class TestLogin(unittest.TestCase):
""" """
# ( )
def setUp(self):
""" , """
# python http
# urllib urllib2 requests
# app.config['TESTING'] = True # app
app.testing = True # app 。 ( , )
# flask (Flask )
self.client = app.test_client()
# 。 ( "test_" )
def test_empty_name_password(self):
""" , """
# Flask post , data ,
response = self.client.post("/dologin", data={})
# respoonse.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)
# name
response = self.client.post("/dologin", data={"name": "admin"})
# respoonse.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)
# 。 ( "test_" )
def test_wrong_name_password(self):
""" """
response = self.client.post("/dologin", data={"name": "admin", "password": "xxx"})
# respoonse.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, 2)
if __name__ == '__main__':
unittest.main() #