首页 > 解决方案 > 如何在python中模拟一个rest API

问题描述

我有一个正在运行的应用程序,其中一些地方使用了一些休息 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

#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

标签: pythonnetworkingpython-requests

解决方案


因此,对于您的场景,如果您想测试您的 api 烧瓶带有模拟测试客户端功能。

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

因此,对于这种情况,您可以创建测试用例并在测试用例中获取测试客户端实例并在 api 级别执行测试。这是一种轻量级的测试方法,而不是您提出的方法

官方flask文档参考以下链接

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

干杯


推荐阅读