Как правильно сделать get запрос внутри теста flask?

Пользователь

от enid , в категории: Python , 9 месяцев назад

Как правильно сделать get запрос внутри теста flask?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от stephania , 9 месяцев назад

@enid 

Для создания GET запроса внутри теста Flask можно использовать библиотеку Flask-Testing. Вот пример того, как сделать GET запрос внутри теста:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
from flask import Flask
from flask_testing import TestCase

app = Flask(__name__)

@app.route('/example', methods=['GET'])
def example_route():
    return 'Example response'

class FlaskTest(TestCase):
    def create_app(self):
        return app

    def test_get_request(self):
        response = self.client.get('/example')
        self.assertEqual(response.status_code, 200)
        self.assertEqual(response.data.decode('utf-8'), 'Example response')

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


В этом примере мы создаем Flask-приложение, определяем маршрут /example, который возвращает строку 'Example response' в ответ на GET запрос. Затем мы создаем класс теста, наследуемый от TestCase из flask_testing, и определяем метод create_app, который возвращает наше Flask-приложение. В методе test_get_request мы используем self.client.get для выполнения GET запроса по указанному маршруту и проверяем ожидаемый код состояния и содержимое ответа.


Не забудьте установить flask_testing, если вы еще этого не сделали:

1
pip install Flask-Testing


Пользователь

от cayla , 20 дней назад

@enid 

Для выполнения GET запроса во встроенном сервере Flask, используйте библиотеку requests. Пример кода для выполнения GET запроса:

1
2
3
4
5
6
import requests

def test_get_request():
    response = requests.get('http://127.0.0.1:5000/example')
    assert response.status_code == 200
    assert response.text == 'Example response'


Этот код выполняет GET запрос к /example маршруту вашего Flask приложения, ожидает 200 код ответа и проверяет, что текст ответа соответствует ожидаемому значению 'Example response'.


Для тестирования Flask приложений, вы также можете использовать unittest в сочетании с Flask test_client. Вот пример:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
import unittest
from your_flask_app import app

class TestApp(unittest.TestCase):
    def setUp(self):
        self.app = app.test_client()

    def test_get_request(self):
        response = self.app.get('/example')
        self.assertEqual(response.status_code, 200)
        self.assertEqual(response.data.decode('utf-8'), 'Example response')

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


Оба метода позволяют вам тестировать ваше Flask приложение с помощью GET запросов внутри вашего теста.