Как издеваться над API rest в python

#python #networking #python-requests

Вопрос:

У меня есть запущенное приложение, которое где-то в середине использует вызов rest API. Теперь для стресс-теста я хочу заменить этот вызов API на какой-нибудь макет сервера. Есть ли какой — нибудь способ сделать это?

Позвольте мне попытаться сформулировать это программно, чтобы получить некоторую ясность. У меня есть какой-то сервер, работающий на порту, скажем, 8080

 # main server
from flask import Flask
from myapp import Myapp

app = Flask(__name__)

@app.route("/find_solution", methods=["GET"])
def solution() :
    return app.sol.find_solution(), 200

def start():
    app.sol = Myapp()
    return app
 

Теперь это Мое приложение

 #myapp
import requests
class Myapp:
    def __init__():
        self.session = requests.Session()

    def find_solution():
        myparameters = {"Some parameter that I filled"}
        return self.session.request('GET', 'http://api.weatherstack.com/current', params=myparameters)
 

Теперь здесь я хочу заменить поведение http://api.weatherstack.com/current без изменения кода. то есть каким-то способом, которым я могу заменить вызов на http:api.weatherstack.com/current сервер моей локальной системы.

Любая помощь руководства приветствуется. Я использую ubuntu 20.04

Комментарии:

1. Вы можете передать параметр методу find_solution() и просто использовать его в своем запросе.

2. @ShaikhAbuzar Я не понял, что вы имеете в виду, используя параметр в запросе.

3. Пожалуйста, взгляните на ответ, который я опубликовал ниже

Ответ №1:

Поэтому для вашего сценария, если вы хотите протестировать свой api, колба поставляется с функцией макетного тестового клиента.

 test_client = app.test_client()
test_client.post('/find_solution', headers={"Content-Type": "application/json"}, data=data)
 

Таким образом, для этого сценария вы можете создавать тестовые случаи, получать экземпляр тестового клиента внутри своего тестового случая и выполнять тесты на уровне api. Это более легкий метод испытаний, чем тот, который вы предложили

Обратитесь к следующей ссылке для получения официальной документации по колбе

 https://flask.palletsprojects.com/en/1.1.x/testing/#keeping-the-context-around
 

Овации