python - 如何在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
解决方案
因此,对于您的场景,如果您想测试您的 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
干杯
推荐阅读
- javascript - 特定行号上的错误 - Android Studio
- wso2 - 如何为 CustomUserStoreManager 创建域?
- java - Android Job Scheduler 应用程序关闭后作业不执行
- php - 使用 certbot 安装 ssl 证书时如何解决未经授权的错误?
- html - 树形图 - 将最后一个孩子移动到 html/css 中的一级
- java - 为什么我在使用休眠时总是遇到同样的错误:ORA-00979:不是 GROUP BY 表达式?
- javascript - 传递给其他刀片后,我的 id 值未从第一个数字中读取数字 0
- css - 如何创建自定义样式的键盘快捷键
- javascript - 通过在 Elasticsearch 中优先考虑索引来查询多个索引?
- web-services - 如何才能实现松耦合“面向服务的架构”(SOA)?解释使用合适的解决方案