Unittesting приложение - PullRequest
       9

Unittesting приложение

0 голосов
/ 26 апреля 2018

Я пытаюсь запустить простой юнит-тест для создаваемого мной спокойного приложения. Сервер работает отлично и отображает данные JSON. Я ищу тест, который подтверждает, что данные json являются запросом 'GET' или подтверждают, скажем, код состояния ответа 200

ниже моя структура каталогов

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

* 1007 INIT * .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

 import unittest
 import os
 import json
 from app import create_app

class FlaskTestCase(unittest.TestCase):
      def test_index(self):
        """Define test variables and initialize app."""
        self.app = create_app(config_name="testing")
        self.client = app.client.test_client
        response = self.client("/")
        # self.assertEqual(response[message],"It works!")
        self.assertEqual(response.status_code, 200)


if __name__ == '__main__':
    unittest.main()

Любые советы о том, как исправить мой test_mealapp.py?

1 Ответ

0 голосов
/ 26 апреля 2018

Это будет работать:

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: и убедитесь, что вы используете метод запроса в качестве атрибута для клиента (получите в этом случае)

...