利用python+flask搭建mock接口服务

1、测试需求来源:

测试环境进行某后端服务的测试,某些功能依赖其他系统的输出数据,由于线下测试环境网络隔离等原因,无法实时获取依赖系统的数据,基于此种情况,需要通过搭建一套接口服务模拟出依赖系统的输出数据,以供被测系统调用。
因此选择python和falsk框架快速搭建一套mock api 服务,模拟依赖系统的输出数据,快速构造测试场景。

2、开发环境准备

  • Python开发环境;
  • Flask安装:pip install flask python;
  • 引用flask模块:import flask

3、使用flask mock api的好处:

  • 自己模拟一个接口,暂时代替第三方接口测试
  • 辅助测试,用来代替没有开发好的接口
  • 将被测单元与依赖模块独立出来

4、测试脚本开发总结:

import flask #python的轻量级的开发框架
server = flask.Flask(__name__)  #__name__当前文件名
datas={}
@server.route('/get_data',methods=['get','post']) #将下面函数变成一个接口
def get_data():
	return 'flask.jsonify(datas)' #return只能返回字符串
	server.run(host=“”,port = 8080,debug = True)  
	# 启动服务,加debug自动帮忙重启

5、测试场景:

  1. 使用GET请求获取数据列表,脚本如下:
	#!/usr/bin/python
	#-*- coding: UTF-8 -*-
	 
	import json
	from flask import request,Flask,jsonify
	
	app = Flask(__name__)
	data=[
		{'key1':'V1','key2':'V2','id':'1'},
		{'key1':'Va1','key2':'Va2','id':'2'},,
		{'key1':'Val1','key2':'Val2','id':'3'}]
	not_exist = {"msg": "task does not exist"}
	values = ['V1', 'Va1', "Val1"]
	exist = {"msg": "value is exist"}
	 
	@app.route("/dataAPI/data/<string:value>",methods=['get','post'])
	def get_data(value):
		if len(value)>0 and value in values:
			for d in values:
				if value==d['value']:
					return make_response(jsonify(d),200)
		else:
			return make_response(jsonify(not_exist),404)
	if __name__=='__main__':
		app.run(host='127.0.0.1',port=8080,debug=True)
  1. 使用PUT方法更新资源
	@app.route("/dataAPI/data/<string:value>",methods=['PUT'])
	def update_data(value):
		if len(value)>0 and value in values:
			for d in values:
				if value==d['value']:
					id==d['id']
					data[id - 1] = request.json
					return make_response(jsonify(data[id-1]),204)
		else:
			return abort(404)
  1. 使用DELETE方法删除资源

	@app.route("/dataAPI/data/<string:value>",methods=['DELETE'])
	def delete_data(value):
		if len(value)>0 and value in values:
			return make_response(jsonify(data),204)
		else:
		return abort(404)
说明
  • jsonify:将我们传入的json形式数据序列化成为json字符串,作为响应的body,并且设置响应的Content-Type为application/json,构造出响应返回至客户端;
  • request可以通过request.json取到接受到数据;
  • abort用于返回通用的错误比如:404,400,500;
  • make_response自定义返回的object,因为一般接口都会返回一个数据和状态码,所以结构为make_response(request.json,201)。

猜你喜欢

转载自blog.csdn.net/ccccsy99/article/details/106003706