#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
Овации