单元测试应用程序

时间:2018-04-26 17:52:38

标签: unit-testing flask-restful

我正在尝试为我正在创建的一个安静的应用程序运行一个简单的单元测试。服务器运行完美并显示json数据。我正在寻找一个测试,确认json数据是'GET'请求或确认200响应状态代码

下面是我的目录结构

C

初始化的.py

├── MealAPP
  ├── app
  │   ├── __init__.py
  │   └── models.py  
  ├── instance
  │   ├── __init__.py
  │   └── config.py
  ├── manage.py
  ├── requirements.txt
  ├── run.py
  └── test_mealapp.py

test_mealapp.py

from flask_api import FlaskAPI
from flask_sqlalchemy import SQLAlchemy
from flask import Flask, jsonify, request

# local import
from instance.config import app_config

# initialize sql-alchemy
db = SQLAlchemy()

def create_app(config_name):
    app = FlaskAPI(__name__, instance_relative_config=True)
    app.config.from_object(app_config["development"])
    app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
    db.init_app(app)

    @app.route("/", methods=['GET'])
    def test():
        return jsonify({'message':'It works!'})

    return app

有关如何修复test_mealapp.py的任何提示?

1 个答案:

答案 0 :(得分:1)

这样可行:

class FlaskTestCase(unittest.TestCase):
    def test_index(self):
        self.app = create_app(config_name="testing")

        with self.app.test_client() as client:
            response = client.get("/")
            responseJson = json.loads(response.data)
            self.assertEqual(responseJson['message'], "It works!")
            self.assertEqual(response.status_code, 200)

尝试始终在with:block中使用客户端,并确保使用请求方法作为客户端的属性(在这种情况下得到)