Тестирование неисправности Flask с помощью SQLAlchemy - PullRequest
0 голосов
/ 20 февраля 2020

Я уже давно пытаюсь протестировать свое приложение Flask, но не могу заставить его работать.

Я немного следовал документации и некоторое время изучал сам и закончил тем, что что-то сложил вместе (код ниже), однако моя реализация всегда возвращает следующую ошибку:

WinError 10061 Client отказано в соединении

В любом случае, вот код, который я использую, первый - тест, а второй - моя фабрика приложений:

. / tests / test_api.py

from flask_testing import TestCase
import requests
from application import create_app, db


class TestApi(TestCase):
    def create_app(self):
        return create_app("test")

    def setUp(self):
        db.create_all()

    def tearDown(self):
        db.session.remove()
        db.drop_all()

    def test_available(self):
        response = requests.get("http://localhost:5000/api")
        self.assertEquals(response.status_code, 200)

. / Application / __ init __. Py

db = SQLAlchemy()


def create_app(env_type: str = "dev"):
    app = Flask(__name__, instance_relative_config=False)

    app.config["DEBUG"] = False
    app.config["TESTING"] = True
    app.config["SQLALCHEMY_DATABASE_URI"] = "sqlite:///:memory:"
    app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = False

    db.init_app(app)

    with app.app_context():
        from . import views # imports my views
        from . import models
        app.add_url_rule("/api/tags", view_func=views.TagEndpoint.as_view("tag_endpoint"))
        app.add_url_rule("/api/tags/<item_name>", view_func=views.TagItemEndpoint.as_view("tag_item_endpoint"))

        return app

Есть идеи, что я могу делать не так?
Или, может, у кого-то есть какой-то минимальный пример для меня, который я мог бы использовать для построения (документы мне не очень помогли).

РЕДАКТИРОВАТЬ: Прежде чем кто-либо спрашивает, я пытался установить URL-адрес запроса как 127.0.0.1:5000/api и IPv4-адрес моих текущих устройств.

1 Ответ

0 голосов
/ 20 февраля 2020

У меня есть тесты, подобные приведенным ниже, и они работают для меня.

from flask_testing import TestCase

class BaseTestCase(TestCase):
    def create_app(self):
        return create_app('test')


def create_app():
    #your create app code here


class sampleTestCase(BaseTestCase):
    def setUp(self):
        db.create_all()

    def tearDown(self):
        db.session.remove()
        db.drop_all()

    def test_available(self):
        response = self.client.get("http://localhost:5000/api")
        self.assertEquals(response.status_code, 200)

даже ваш существующий код должен работать, вам просто нужно использовать self.client.get вместо requests.get

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...