Flask实现接口mock,安装及使用教程(一)

1、什么是接口mock

主要是针对单元测试的应用,它可以很方便的解除单元测试中各种依赖,大大的降低了编写单元测试的难度

2、什么是mock server

正常情况下:测试客户端 ------测试------> 被测系统 ------依赖------>外部服务依赖

在被测系统和外部服务依赖之间进行mock server,用于模拟外部服务的各种依赖(模拟后端的数据)

3、为什么要mock server

软件开发过程中,前端dev、后端dev、测试都有mock server的需求,比如:

  • 前端:页面写好了,后端接口没开发完成,使用mock server就可以提前联调前端的功能
  • 后端:后端往往比较复杂,有的feature多个后端相互依赖,提测前不光前后端要联调,多个后端之间也要进行联调,因此先ready的后端要想尽早联调自己的部分,那后端dev也需要mock server
  • 测试:测试前端功能,但是后端还没有开发完,这个时候测试就需要mock server来模拟后端的接口。如果是测试后端feature,但是后端依赖的接口还没开发完,同样使用mockserver来模拟后端的接口

4、安装flask

python 复制代码
pip install flask

5、第一个flask dmeo

python 复制代码
from flask import Flask

# 创建一个flask实例
app = Flask(__name__)


# 路由系统生成视图对应的url,接口地址。/ 根目录。可以加子路径,例如/user
@app.route('/')
# 视图函数
def first_flask():
    # 获取到的response
    return 'hello world'


if __name__ == '__main__':
    # 启动socket
    app.run()

Reuslt:

运行代码,默认启动一个socket服务,默认ip是127.0.0.1,端口5000

访问127.0.0.1:5000后,可以看到服务端返回的hello world

6、Demo2:name写死

代码如下:在视图函数中,直接指名name的值。
注意:之前启动的服务一定要关掉,不然访问的还是先run起来的服务。

python 复制代码
from flask import Flask

# 创建一个flask实例
app = Flask(__name__)

# name是写死的
@app.route('/cc/')
def second_flask():
    return "hello world cc"

if __name__ == '__main__':
    app.run()

运行效果

7、Demo3:动态name

代码如下:动态参数,用尖括号进行表示,不同类型写法不同

shell 复制代码
Str,name是变量名,例如:http://127.0.0.1:5000/cc/
	'/<name>'
int,age是变量名,例如:http://127.0.0.1:5000/18/
	'/<int:age>/'
float,salary是变量名,例如:http://127.0.0.1:5000/2345555.8889/
	'/<float:salary>/'
url,url是变量名,实际使用时,传一个正确的url链接,例如:http://127.0.0.1:5000/http://www.baiu.com/
	'/<path:url>/'

这种方式很灵活,实际中更多的是非动态的写法,除非后端特别复杂才会用的到。

python 复制代码
from flask import Flask

# 创建一个flask实例
app = Flask(__name__)


# 设置一个动态参数,使用flask默认端口。路由即接口路径
@app.route('/<name>')
def thrid_flask(name):
    print(name)
    return "hello world"
    
if __name__ == '__main__':
    app.run()

运行效果:

8、Demo4:指定允许的请求方法

例如仅允许get和post方法访问,不能使用delete、put等请求方法

8.1 伪后端代码

python 复制代码
from flask import Flask

# 创建一个flask实例
app = Flask(__name__)


@app.route('/login', methods=['GET', 'POST'])
def login_flask():
    return "hello world login"


if __name__ == '__main__':
    app.run()

启动服务后,控制台如下:

8.2 测试代码

python 复制代码
import requests

url = "http://127.0.0.1:5000/login"

resp = requests.get(url=url)
print(resp)
print(resp.text)

resp = requests.post(url=url)
print(resp)
print(resp.text)

resp = requests.delete(url=url)
print(resp)
print(resp.text)

运行测试代码,flask的控制台如下:
请求结果如下:可见delete方法访问被禁止了。

相关推荐
sniper_fandc几秒前
SpringBoot系列—入门
java·spring boot·后端
好开心啊没烦恼5 分钟前
Python 数据分析:计算,分组统计1,df.groupby()。听故事学知识点怎么这么容易?
开发语言·python·数据挖掘·数据分析·pandas
lljss20201 小时前
Python11中创建虚拟环境、安装 TensorFlow
开发语言·python·tensorflow
空中湖1 小时前
tensorflow武林志第二卷第九章:玄功九转
人工智能·python·tensorflow
CodeCraft Studio2 小时前
CAD文件处理控件Aspose.CAD教程:使用 Python 将绘图转换为 Photoshop
python·photoshop·cad·aspose·aspose.cad
Python×CATIA工业智造4 小时前
Frida RPC高级应用:动态模拟执行Android so文件实战指南
开发语言·python·pycharm
onceco5 小时前
领域LLM九讲——第5讲 为什么选择OpenManus而不是QwenAgent(附LLM免费api邀请码)
人工智能·python·深度学习·语言模型·自然语言处理·自动化
狐凄5 小时前
Python实例题:基于 Python 的简单聊天机器人
开发语言·python
悦悦子a啊6 小时前
Python之--基本知识
开发语言·前端·python
Piper蛋窝7 小时前
深入 Go 语言垃圾回收:从原理到内建类型 Slice、Map 的陷阱以及为何需要 strings.Builder
后端·go