flask 开发接口测试平台

  数据库,forms  views  视图,

  数据库如下:

# encoding: utf-8
'''
@author: lileilei
@file: models.py
@time: 2017/5/6 19:28
'''
from  app import  db
import datetime
from werkzeug.security import generate_password_hash,check_password_hash
class User(db.Model):#用户表uer_id=db.Column(db.Integer,primary_key=True,autoincrement=True)#用户iduser_name=db.Column(db.String(64))#用户名password=db.Column(db.String(64))#用户密码status=db.Column(db.Integer)level=db.Column(db.Integer)user_zhuce_date=db.Column(db.DateTime,default=datetime.datetime.now())#注册时间user_zhuce_email=db.Column(db.String(64))#注册ipuser_iphone=db.Column(db.Integer)#手机号user_qq=db.Column(db.Integer)#qqdef __repr__(self):return '<User %r>' % self.user_namedef set_password(self, password):self.password = generate_password_hash(password)def check_password(self, password):return check_password_hash(self.password, password)
class Model(db.Model):#模块model_id=db.Column(db.Integer,primary_key=True,autoincrement=True)model_name = db.Column(db.String(256))status = db.Column(db.Integer)
class Interface(db.Model):#接口interface_id=db.Column(db.Integer,primary_key=True,autoincrement=True)model_id=db.Column(db.Integer,db.ForeignKey('model.model_id'))#对应模块的名字interface_name=db.Column(db.String(64))#接口名字interface_url=db.Column(db.String(1024))#接口地址interface_methd=db.Column(db.String(64))#接口请求方式request_exam=db.Column(db.String(4096))#请求reposnese_exam=db.Column(db.String(4096))#返回stasus=db.Column(db.Integer)#状态def __repr__(self):return '<Interface name is :%r>'%self.interface_name
class Parameter(db.Model):parameter_id = db.Column(db.Integer, primary_key=True, autoincrement=True)interface_id = db.Column(db.Integer, db.ForeignKey("interface.interface_id"))parameter_type = db.Column(db.String(64))parameter_group_id = db.Column(db.Integer)parameter_name = db.Column(db.String(64))necessary = db.Column(db.String(64))type = db.Column(db.String(64))default = db.Column(db.String(64))remark = db.Column(db.String(64))level = db.Column(db.String(64))

views 视图函数如下:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import sys
from flask import render_template, redirect, session, url_for,flash,request
from app import app
from app import db
from .models import Interface, Model, User, Parameter
from .forms import LoginForm, ReguistForm,ModelForm, InterfaceForm, ParameterRequestForm, ParameterResponseForm, SubmitForm
import datetime
# 前台首页
@app.route("/", methods=["GET", "POST"])
@app.route("/index", methods=["GET", "POST"])
def index():return render_template("index.html")
# 前台模块列表
@app.route("/font", methods=["GET", "POST"])
def front():model_all = Model.query.all()model_forms = []for i in range(len(model_all)):model_form = {"model_id": model_all[i].model_id,"model_name": model_all[i].model_name}model_forms.append(model_form)return render_template("front.html",model_forms=model_forms)
# 前台接口列表
@app.route("/front_model/<model_id>", methods=["GET", "POST"])
def front_model(model_id):model_one = Model.query.filter_by(model_id=model_id).first()interface_model_all = Interface.query.filter_by(model_id=model_id).all()interface_model_forms = []for i in range(len(interface_model_all)):interface_model_form = {"interface_id": interface_model_all[i].interface_id,"interface_name": interface_model_all[i].interface_name,"interface_url": interface_model_all[i].interface_url}interface_model_forms.append(interface_model_form)return render_template("front_model.html",model_id=model_id,model_one=model_one,interface_model_forms=interface_model_forms)
g_parameter_request = []
g_parameter_response = []
# 前台接口详情
@app.route("/front_interface/<model_id>&<interface_id>", methods=["GET", "POST"])
def front_interface(model_id, interface_id):global g_parameter_request, g_parameter_responsemodel_one = Model.query.filter_by(model_id=model_id).first()interface_model_all = Interface.query.filter_by(model_id=model_id).all()interface_model_one = Interface.query.filter_by(interface_id=interface_id).first()interface_model_forms = []for i in range(len(interface_model_all)):interface_model_form = {"interface_id": interface_model_all[i].interface_id,"interface_name": interface_model_all[i].interface_name,"interface_url": interface_model_all[i].interface_url}interface_model_forms.append(interface_model_form)parameter_request_all = Parameter.query.filter_by(interface_id=interface_id, parameter_type=10).all()parameter_request_forms = []for i in range(len(parameter_request_all)):parameter_request_form = {"parameter_id": parameter_request_all[i].parameter_id,"parameter_name": parameter_request_all[i].parameter_name,"necessary": parameter_request_all[i].necessary,"type": parameter_request_all[i].type,"default": parameter_request_all[i].default,"remark": parameter_request_all[i].remark,"parameter_group_id": parameter_request_all[i].parameter_group_id,"level": parameter_request_all[i].level}parameter_request_forms.append(parameter_request_form)parameter_response_all = Parameter.query.filter_by(interface_id=interface_id, parameter_type=20).all()parameter_response_forms = []for i in range(len(parameter_response_all)):parameter_response_form = {"parameter_id": parameter_response_all[i].parameter_id,"parameter_name": parameter_response_all[i].parameter_name,"necessary": parameter_response_all[i].necessary,"type": parameter_response_all[i].type,"default": parameter_response_all[i].default,"remark": parameter_response_all[i].remark,"parameter_group_id": parameter_response_all[i].parameter_group_id,"level": parameter_response_all[i].level}parameter_response_forms.append(parameter_response_form)g_parameter_request = []    # 全局变量、清空列表数据g_parameter_response = []   # 全局变量、清空列表数据
    n_parameter_request(parameter_request_forms, parameter_request_all[0].parameter_group_id)n_parameter_response(parameter_response_forms,parameter_response_all[0].parameter_group_id)return render_template("front_interface.html",model_id=model_id,model_one=model_one,interface_model_forms=interface_model_forms,interface_model_one=interface_model_one,g_parameter_request=g_parameter_request,g_parameter_response=g_parameter_response)
# 请求参数排序
def n_parameter_request(request, parameter_group_id):for form in request:if form["parameter_group_id"] == parameter_group_id:new_parameter_group_id = form["parameter_id"]g_parameter_request.append(form)n_parameter_request(request, new_parameter_group_id) return g_parameter_request
# 返回参数排序
def n_parameter_response(response, parameter_group_id):for form in response:if form["parameter_group_id"] == parameter_group_id:new_parameter_group_id = form["parameter_id"]g_parameter_response.append(form)n_parameter_response(response, new_parameter_group_id)return g_parameter_response
# 后台首页
@app.route("/home", methods=["GET", "POST"])
def home():if not session.get("logged_in"):return redirect(url_for("login"))return render_template("home.html")
# 后台登录
@app.route("/login", methods=["GET", "POST"])
def login():form = LoginForm()if form.validate_on_submit():try:user_one = User.query.filter_by(user_name=form.username.data).first()me=user_one.check_password(form.password.data)if me==True  and user_one.status == 1:session["logged_in"] = Truereturn redirect(url_for("home"))else:flash('登录密码错误!请检测你的密码')return render_template("login.html", form=form)except AttributeError:flash('登录fail!')return render_template("login.html", form=form)return render_template("login.html",form=form)
# 后台登出
@app.route("/logout", methods=["GET", "POST"])
def logout():session.pop("logged_in", None)return redirect(url_for("index"))
# 模块管理
@app.route("/model", methods=["GET", "POST"])
def model():if not session.get("logged_in"):return redirect(url_for("login"))model_all = Model.query.all()model_forms = []for i in range(len(model_all)):model_form = {"model_id": model_all[i].model_id,"model_name": model_all[i].model_name}model_forms.append(model_form)return render_template("model.html",model_forms=model_forms)
# 新增模块
@app.route("/addmodel", methods=["GET", "POST"])
def addmodel():if not session.get("logged_in"):return redirect(url_for("login"))add_model = ModelForm()submit = SubmitForm()if submit.validate_on_submit():add = Model(model_name=add_model.model_name.data)db.session.add(add)db.session.commit()return redirect(url_for("model"))return render_template("addmodel.html",add_model=add_model,submit=submit)
# 编辑模块
@app.route("/editmodel/<model_id>", methods=["GET", "POST"])
def editmodel(model_id):if not session.get("logged_in"):return redirect(url_for("login"))model_one = Model.query.filter_by(model_id=model_id).first()edit_model = ModelForm()submit = SubmitForm()if submit.validate_on_submit():model_one.model_name = edit_model.model_name.datadb.session.commit()return redirect(url_for("model"))edit_model.model_name.data = model_one.model_namereturn render_template("editmodel.html",edit_model=edit_model,submit=submit)
# 接口列表
@app.route("/interface/<model_id>")
def interface(model_id):if not session.get("logged_in"):return redirect(url_for("login"))interface_model_all = Interface.query.filter_by(model_id=model_id).all()interface_model_forms = []for i in range(len(interface_model_all)):interface_model_form = {"interface_id": interface_model_all[i].interface_id,"interface_name": interface_model_all[i].interface_name,"interface_url": interface_model_all[i].interface_url}interface_model_forms.append(interface_model_form)return render_template("interface.html",model_id=model_id,interface_model_forms=interface_model_forms)
# 新增接口
@app.route("/addinterface/<model_id>", methods=["GET", "POST"])
def addinterface(model_id):if not session.get("logged_in"):return redirect(url_for("login"))add_interface = InterfaceForm()submit = SubmitForm()if submit.validate_on_submit():add = Interface(interface_name=add_interface.interface_name.data,model_id=model_id,interface_url=add_interface.interface_url.data,interface_methd=add_interface.interface_method.data,request_exam=add_interface.request_exam.data,reposnese_exam=add_interface.response_exam.data)db.session.add(add)db.session.commit()return redirect(url_for("interface",model_id=model_id))return render_template("addinterface.html",add_interface=add_interface,model_id=model_id,submit=submit)
# 编辑接口
@app.route("/editinterface/<model_id>&<interface_id>", methods=["GET", "POST"])
def editinterface(model_id, interface_id):if not session.get("logged_in"):return redirect(url_for("login"))interface_model_one = Interface.query.filter_by(interface_id=interface_id).first()edit_interface_model = InterfaceForm()submit = SubmitForm()if submit.validate_on_submit():interface_model_one.interface_name = edit_interface_model.interface_name.datainterface_model_one.interface_url = edit_interface_model.interface_url.datainterface_model_one.interface_methd = edit_interface_model.interface_method.datainterface_model_one.request_exam = edit_interface_model.request_exam.datainterface_model_one.response_exam = edit_interface_model.response_exam.datadb.session.commit()return redirect(url_for("interface",model_id=model_id))edit_interface_model.interface_name.data = interface_model_one.interface_nameedit_interface_model.interface_url.data = interface_model_one.interface_urledit_interface_model.interface_method.data = interface_model_one.interface_methdedit_interface_model.request_exam.data = interface_model_one.request_examedit_interface_model.response_exam.data = interface_model_one.reposnese_examreturn render_template("editinterface.html",model_id=model_id,interface_id=interface_id,edit_interface_model=edit_interface_model,submit=submit)
# 请求参数列表
@app.route("/parameter_request/<model_id>&<interface_id>", methods=["GET", "POST"])
def parameter_request(model_id, interface_id):if not session.get("logged_in"):return redirect(url_for("login"))parameter_request_all = Parameter.query.filter_by(interface_id=interface_id, parameter_type=10).all()parameter_request_forms = []for i in range(len(parameter_request_all)):parameter_request_form = {"parameter_id": parameter_request_all[i].parameter_id,"parameter_name": parameter_request_all[i].parameter_name,"necessary": parameter_request_all[i].necessary,"type": parameter_request_all[i].type,"default": parameter_request_all[i].default,"remark": parameter_request_all[i].remark,"parameter_group_id": parameter_request_all[i].parameter_group_id,"level": parameter_request_all[i].level}parameter_request_forms.append(parameter_request_form)return render_template("parameter_request.html",model_id=model_id,interface_id=interface_id,parameter_request_forms=parameter_request_forms)
# 新增请求参数
@app.route("/addparameter_request/<model_id>&<interface_id>", methods=["GET", "POST"])
def addparameter_request(model_id, interface_id):if not session.get("logged_in"):return redirect(url_for("login"))add_parameter_request = ParameterRequestForm()submit = SubmitForm()if submit.validate_on_submit():add = Parameter(interface_id=interface_id,parameter_type=10,parameter_group_id=add_parameter_request.parameter_group_id.data,parameter_name=add_parameter_request.parameter_name.data,necessary=add_parameter_request.necessary.data,type=add_parameter_request.type.data,default=add_parameter_request.default.data,remark=add_parameter_request.remark.data,level=add_parameter_request.level.data)db.session.add(add)db.session.commit()return redirect(url_for("parameter_request",model_id=model_id,interface_id=interface_id))return render_template("addparameter_request.html",add_parameter_request=add_parameter_request,model_id=model_id,interface_id=interface_id,submit=submit)
# 编辑请求参数
@app.route("/editparameter_request/<model_id>&<interface_id>&<parameter_id>", methods=["GET", "POST"])
def editparameter_request(model_id, interface_id, parameter_id):if not session.get("logged_in"):return redirect(url_for("login"))parameter_request_one = Parameter.query.filter_by(parameter_id=parameter_id).first()edit_parameter_request = ParameterRequestForm()submit = SubmitForm()if submit.validate_on_submit():parameter_request_one.parameter_name = edit_parameter_request.parameter_name.dataparameter_request_one.necessary = edit_parameter_request.necessary.dataparameter_request_one.type = edit_parameter_request.type.dataparameter_request_one.default = edit_parameter_request.default.dataparameter_request_one.remark = edit_parameter_request.remark.dataparameter_request_one.parameter_group_id = edit_parameter_request.parameter_group_id.dataparameter_request_one.level = edit_parameter_request.level.datadb.session.commit()return redirect(url_for("parameter_request",model_id=model_id,interface_id=interface_id))edit_parameter_request.parameter_name.data = parameter_request_one.parameter_nameedit_parameter_request.necessary.data = parameter_request_one.necessaryedit_parameter_request.type.data = parameter_request_one.typeedit_parameter_request.default.data = parameter_request_one.defaultedit_parameter_request.remark.data = parameter_request_one.remarkedit_parameter_request.parameter_group_id.data = parameter_request_one.parameter_group_idedit_parameter_request.level.data = parameter_request_one.levelreturn render_template("editparameter_request.html",model_id=model_id,interface_id=interface_id,parameter_id=parameter_id,edit_parameter_request=edit_parameter_request,submit=submit)
# 删除请求参数
@app.route("/deleteparameter_request/<model_id>&<interface_id>&<parameter_id>", methods=["GET", "POST"])
def deleteparameter_request(model_id, interface_id, parameter_id):if not session.get("logged_in"):return redirect(url_for("login"))deleteparameter_request_one = Parameter.query.filter_by(parameter_id=parameter_id).first()db.session.delete(deleteparameter_request_one)db.session.commit()parameter_request_all = Parameter.query.filter_by(interface_id=interface_id, parameter_type=10).all()parameter_request_forms = []for i in range(len(parameter_request_all)):parameter_request_form = {"parameter_id": parameter_request_all[i].parameter_id,"parameter_name": parameter_request_all[i].parameter_name,"necessary": parameter_request_all[i].necessary,"type": parameter_request_all[i].type,"default": parameter_request_all[i].default,"remark": parameter_request_all[i].remark,"parameter_group_id": parameter_request_all[i].parameter_group_id,"level": parameter_request_all[i].level}parameter_request_forms.append(parameter_request_form)return render_template("parameter_request.html",model_id=model_id,interface_id=interface_id,parameter_request_forms=parameter_request_forms)
# 返回参数列表
@app.route("/parameter_response/<model_id>&<interface_id>", methods=["GET", "POST"])
def parameter_response(model_id, interface_id):if not session.get("logged_in"):return redirect(url_for("login"))parameter_response_all = Parameter.query.filter_by(interface_id=interface_id, parameter_type=20).all()parameter_response_forms = []for i in range(len(parameter_response_all)):parameter_response_form = {"parameter_id": parameter_response_all[i].parameter_id,"parameter_name": parameter_response_all[i].parameter_name,"necessary": parameter_response_all[i].necessary,"type": parameter_response_all[i].type,"default": parameter_response_all[i].default,"remark": parameter_response_all[i].remark,"parameter_group_id": parameter_response_all[i].parameter_group_id,"level": parameter_response_all[i].level}parameter_response_forms.append(parameter_response_form)return render_template("parameter_response.html",model_id=model_id,interface_id=interface_id,parameter_response_forms=parameter_response_forms)
# 新增返回参数
@app.route("/addparameter_response/<model_id>&<interface_id>", methods=["GET", "POST"])
def addparameter_response(model_id, interface_id):if not session.get("logged_in"):return redirect(url_for("login"))add_parameter_response = ParameterResponseForm()submit = SubmitForm()if submit.validate_on_submit():add = Parameter(interface_id=interface_id,parameter_type=20,parameter_group_id=add_parameter_response.parameter_group_id.data,parameter_name=add_parameter_response.parameter_name.data,necessary=add_parameter_response.necessary.data,type=add_parameter_response.type.data,default=add_parameter_response.default.data,remark=add_parameter_response.remark.data,level=add_parameter_response.level.data)db.session.add(add)db.session.commit()return redirect(url_for("parameter_response",model_id=model_id,interface_id=interface_id))return render_template("addparameter_response.html",add_parameter_response=add_parameter_response,model_id=model_id,interface_id=interface_id,submit=submit)
# 编辑返回参数
@app.route("/editparameter_response/<model_id>&<interface_id>&<parameter_id>", methods=["GET", "POST"])
def editparameter_response(model_id, interface_id, parameter_id):if not session.get("logged_in"):return redirect(url_for("login"))parameter_response_one = Parameter.query.filter_by(parameter_id=parameter_id).first()edit_parameter_response = ParameterResponseForm()submit = SubmitForm()if submit.validate_on_submit():parameter_response_one.parameter_name = edit_parameter_response.parameter_name.dataparameter_response_one.necessary = edit_parameter_response.necessary.dataparameter_response_one.type = edit_parameter_response.type.dataparameter_response_one.default = edit_parameter_response.default.dataparameter_response_one.remark = edit_parameter_response.remark.dataparameter_response_one.parameter_group_id = edit_parameter_response.parameter_group_id.dataparameter_response_one.level = edit_parameter_response.level.datadb.session.commit()return redirect(url_for("parameter_response",model_id=model_id,interface_id=interface_id))edit_parameter_response.parameter_name.data = parameter_response_one.parameter_nameedit_parameter_response.necessary.data = parameter_response_one.necessaryedit_parameter_response.type.data = parameter_response_one.typeedit_parameter_response.default.data = parameter_response_one.defaultedit_parameter_response.remark.data = parameter_response_one.remarkedit_parameter_response.parameter_group_id.data = parameter_response_one.parameter_group_idedit_parameter_response.level.data = parameter_response_one.levelreturn render_template("editparameter_response.html",model_id=model_id,interface_id=interface_id,parameter_id=parameter_id,edit_parameter_response=edit_parameter_response,submit=submit)
# 删除返回参数
@app.route("/deleteparameter_response/<model_id>&<interface_id>&<parameter_id>", methods=["GET", "POST"])
def deleteparameter_response(model_id, interface_id, parameter_id):if not session.get("logged_in"):return redirect(url_for("login"))deleteparameter_response_one = Parameter.query.filter_by(parameter_id=parameter_id).first()db.session.delete(deleteparameter_response_one)db.session.commit()parameter_response_all = Parameter.query.filter_by(interface_id=interface_id, parameter_type=20).all()parameter_response_forms = []for i in range(len(parameter_response_all)):parameter_response_form = {"parameter_id": parameter_response_all[i].parameter_id,"parameter_name": parameter_response_all[i].parameter_name,"necessary": parameter_response_all[i].necessary,"type": parameter_response_all[i].type,"default": parameter_response_all[i].default,"remark": parameter_response_all[i].remark,"parameter_group_id": parameter_response_all[i].parameter_group_id,"level": parameter_response_all[i].level}parameter_response_forms.append(parameter_response_form)return render_template("parameter_response.html",model_id=model_id,interface_id=interface_id,parameter_response_forms=parameter_response_forms)
# 用户管理
@app.route("/users", methods=["GET", "POST"])
def user():if not session.get("logged_in"):return redirect(url_for("login"))user_all = User.query.filter_by(status=1).all()user_forms = []for i in range(len(user_all)):user_form = {"user_id": user_all[i].uer_id,"user_name": user_all[i].user_name,"password": user_all[i].password[:30],"status": user_all[i].status,"level": user_all[i].level,"user_zhuce_date": user_all[i].user_zhuce_date,"user_zhuce_email": user_all[i].user_zhuce_email,"user_iphone": user_all[i].user_iphone,"user_qq": user_all[i].user_qq}user_forms.append(user_form)return render_template("user_admin.html",user_forms=user_forms)
#注册
@app.route('/register',methods=['GET','POST'])
def registser():form = ReguistForm()if form.validate_on_submit():user=form.user_name.datame=User.query.filter_by(user_name=user).first()if me:flash('用户名已经存在!')return  render_template('regist.html',form=form)if form.que_password.data != form.password.data:flash(' 确认密码是否一致!')return  render_template('regist.html',form=form)passw=form.password.dataprint(passw)add=User(user_name=form.user_name.data,status=1,user_zhuce_email=form.email.data,user_iphone=form.iphone.data,user_qq=form.qq.data,user_zhuce_date=datetime.datetime.now())add.set_password(password=passw)db.session.add(add)db.session.commit()return  redirect(url_for('login'))return render_template("regist.html",form=form)
#删除用户
@app.route('/delete/<user_name>',methods=['GET','POST'])
def delete(user_name):if not session.get("logged_in"):return redirect(url_for("login"))delete_user=User.query.filter_by(user_name=user_name).first()db.session.delete(delete_user)db.session.commit()user_all = User.query.filter_by(status=1).all()user_forms = []for i in range(len(user_all)):user_form = {"user_id": user_all[i].uer_id,"user_name": user_all[i].user_name,"password": user_all[i].password[:30],"status": user_all[i].status,"level": user_all[i].level,"user_zhuce_date": user_all[i].user_zhuce_date,"user_zhuce_email": user_all[i].user_zhuce_email,"user_iphone": user_all[i].user_iphone,"user_qq": user_all[i].user_qq}user_forms.append(user_form)return render_template("user_admin.html",user_forms=user_forms)

forms 表单代码如下:

#!/usr/bin/env python
# -*- coding: utf-8 -*-from flask_wtf import Form
from wtforms import StringField, TextField, PasswordField, FormField, SubmitField, FieldList, IntegerField
from wtforms.validators import Required, DataRequiredclass LoginForm(Form):username = StringField("登陆名", validators=[Required()])password = PasswordField("密码", validators=[Required()])class ModelForm(Form):model_name = StringField("中文名称", validators=[Required()])class InterfaceForm(Form):interface_name = StringField("接口名称", validators=[Required()])interface_url = StringField("接口地址", validators=[Required()])interface_method = StringField("接口方法", validators=[Required()])request_exam = TextField("请求示例", validators=[Required()])response_exam = TextField("返回示例", validators=[Required()])class ParameterRequestForm(Form):parameter_group_id = StringField("从属", validators=[Required()])parameter_name = StringField("参数名称", validators=[Required()])necessary = StringField("是否必须", validators=[Required()])type = StringField("类型", validators=[Required()])default = StringField("默认值", validators=[Required()])remark = StringField("备注", validators=[Required()])level = StringField("层级", validators=[Required()])class ParameterResponseForm(Form):parameter_group_id = StringField("从属", validators=[Required()])parameter_name = StringField("参数名称", validators=[Required()])necessary = StringField("是否必须", validators=[Required()])type = StringField("类型", validators=[Required()])default = StringField("示例", validators=[Required()])remark = StringField("描述", validators=[Required()])level = StringField("层级", validators=[Required()])class SubmitForm(Form):submit = SubmitField("保存")class ReguistForm(Form):#注册user_name=StringField('用户名',validators=[Required()])password=PasswordField('密码',validators=[Required()])que_password=PasswordField('密码',validators=[Required()])iphone=IntegerField('手机号',validators=[Required()])qq=IntegerField('qq号',validators=[Required()])email=StringField('邮箱',validators=[Required()])

效果如下图:

原文地址:https://www.cnblogs.com/leiziv5/p/6830256.html

git地址https://github.com/liwanlei/plmock

百度网盘地址https://pan.baidu.com/disk/home#/all?vmode=list&path=%2Fpython%2Bflask%E5%BC%80%E5%8F%91%E6%8E%A5%E5%8F%A3%E6%B5%8B%E8%AF%95%E5%B9%B3%E5%8F%B0

转载于:https://www.cnblogs.com/111testing/p/10810317.html

flask 开发接口测试平台相关推荐

  1. 面试高级测试工程师修炼之接口测试平台开发

    说说你敢不敢,来一场说走就走的跳槽? 下面主要是关于测试行业的一个分享,如果你暂时不关心测试接口测试平台开发相关,就直接从"以下是重点"看,或者滑到文末看有没有你需要的~图片 简书 ...

  2. 10 接口测试平台 项目管理模块开发(三)

    别人写的平台再垃圾,也是用来淘汰你的. 代码更新地址:https://github.com/ahu965/api-automator.git Python环境没有的,请自行安装,本教程采用的是pyth ...

  3. Django +python+bootstrap 开发web,app,接口测试平台(持续更新)

    开发测试平台的初衷:希望web,app的UI自动化和接口的自动化能够一起执行,去掉jenkins构建,代码重构,繁多等问题. 本平台是1.0版本,后续还将完善更多的功能(考虑是作成一个测试的客户端还是 ...

  4. python接口测试框架django_开源~自研接口测试平台 Django2.0+Vue

    接口测试平台从开始到放弃 python3.6.3 Django 2.0.2框架 版本更新: v2.3 引入docker部署,由于采用的docker,基础镜像为centos,所以Windows下部署仍然 ...

  5. flask接口mysql开发例子,使用Flask开发简单接口3–引入MySQL

    在线QQ客服:1922638 专业的SQL Server.MySQL数据库同步软件 在前两篇文章中,我们学习了通过Flask开发GET和POST请求接口,但是尚未实现操作数据库,因此,今天的目的是学习 ...

  6. flask开发桌面应用程序_使用Microsoft Authenticatio将多个破折号应用程序嵌入Flask中...

    flask开发桌面应用程序 Full disclosure: I am not an expert in developing web applications. I don't even consi ...

  7. 《随便测测》WEB接口测试平台

    编写用例的船新版本,从未有过的顺滑体验 背景 在保证用例运行稳定.高效.准确的前提下 以降低测试人员编写用例的时间为目的,减少编写用例的复杂度,达到提升效率的目的. 解决问题 因被测系统业务流程长,接 ...

  8. 阿里智能化接口测试平台--暴雪

    阿里QA导读:随着人工智能的发展,AI概念已经站在了时代的风口,掀起一阵全行业的get into AI热潮:智能测试作为AI热潮下一个新的测试领域,也正在被各互联网公司所追逐,探索和应用.本次分享,将 ...

  9. 一款接口自动化神器—开源接口测试平台Lim(Less is More)

    前言 对于传统的实现接口自动化的方案往往是搭建自动化框架,通过excel编写用例来驱动执行,例如常见的万金油技术栈组合:excel(编写用例).pytest(用例执行).allure(测试报告)等. ...

最新文章

  1. Java 小故事系列 导航
  2. Android 网络状态的监控
  3. 215. 数组中的第K个最大元素 golang
  4. VSS 请求程序和 SharePoint 2013
  5. 丁香园 武汉 神童_扒一扒武汉同济、协和规培待遇
  6. 使用Linux命令行归档文件
  7. java 集合类 *****
  8. [设计模式] - 工厂模式
  9. OPPO宣布与哈苏达成影像战略合作
  10. python条件表达式有哪几个_Python中条件表达式的评估顺序是什么?
  11. 在Android应用中实现Google搜索的例子
  12. 内网通v3.1.2141无捆绑绿色官方版
  13. mysql自制食物_近2千条日常食物营养表ACCESS数据库Mysql数据库
  14. 十大著名黑客——李纳斯-托瓦兹
  15. 京东商城注册页面使用正则表达式,可以用在别处哦
  16. 排序(使用插入法对数组元素从小到大排序)
  17. 动力电池产业剧变中,宁德时代拿什么保住“一哥”地位?
  18. 如何使用加密锁加密自己程序
  19. 两个链表的第一个公共节点
  20. 注册表键值的导出与导入

热门文章

  1. go channel管道select case随机选择管道数据
  2. ubuntu/deepin常用软件清单(都是使用sudo apt-get install安装方式)
  3. Spark创建RDD的四种方式(二):从外部存储(文件)创建 RDD代码示例
  4. Linux vim编辑器常用命令
  5. ReentrantLock锁
  6. 通话录音_iOS14,通话录音终于来了!
  7. micopython 18b20_micropython typboaed v202连接DS18B20测温小实验
  8. GAD计算机辅助诊断,GAD-2和GAD-7在心血管门诊焦虑筛查中的信度与效度分析
  9. Qt智能指针--QSharedPointer
  10. django 集成个推_Django网站添加WebIM