搭建自动化测试平台(python+flask+ )

在这里插入图片描述
pip freeze > requirements.txt 将所有的依赖装入这个。
该命令会创建一个文档为requirements.txt,并将当前环境上所有的依赖包包含在当前的环境上。

待脚本写完之后,在python console写入命令就好。
再使用db.createall()方法可以达到在数据库里创建一个数据库
在这里插入图片描述
在这里插入图片描述
代码详情见附件在这里插入代码片from flask import Flask, request, jsonify
from flask_restful import Resource, Api
from flask_sqlalchemy import SQLAlchemy
from flask_jwt_extended import (
JWTManager, jwt_required, create_access_token,
get_jwt_identity
)
from flask_jwt_extended import jwt_manager
from sqlalchemy.orm import sessionmaker
from sqlalchemy import create_engine
from jenkinsapi.jenkins import Jenkins
app = Flask(name)
api = Api(app)
jwt = JWTManager(app)
#此为轻量级的数据库,不适应于大量的数据库
#app.config[‘SQLALCHEMY_DATABASE_URI’] = ‘sqlite:tmp/test.db’
#使用自己本地的mysql
app.config[‘SQLALCHEMY_DATABASE_URI’] = ‘mysql+pymysql://root:123456@localhost:3306/python14’
#token管理 。#密码改个名字,不然会被不怀好意的人窃取
app.config[‘JWT_SECRET_KEY’] = ‘localhost’ # Change this

done: 输出中文json

app.config[“JSON_AS_ASCII”] = False
db = SQLAlchemy(app)
jenkins=Jenkins(
‘http://localhost:8080’,
username=‘x’,
password=‘11bc63a77c1808e57f2dfeaafef3fc7f31’ )
class User(db.Model):
tablename = “userxwl”
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(80), unique=True, nullable=False)
password = db.Column(db.String(80), unique=True, nullable=False)
email = db.Column(db.String(120), unique=True, nullable=False)

def __repr__(self):
    return '<User %r>' % self.username

class Testcase(db.Model):
tablename = “xwl_testcase”
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(80), unique=True, nullable=False)
description = db.Column(db.String(500), unique=False, nullable=False)
data = db.Column(db.String(1024), unique=False, nullable=False)

def __repr__(self):
    return '<TestCase %r>' % self.name

class TestCaseApi(Resource):
#有如下装饰器,就对一些操作有了要求,必须得有token才能进行操作
@jwt_required
def get(self):
r=[]
res={}
for t in Testcase.query.all():
res[‘id’]=t.id
res[‘name’]=t.name
res[‘description’]=t.description
res[‘data’]=t.data
r.append(res)
#查询所有的case出来
#return Testcase.query.all()
return r
#return {‘id’:t.id,‘name’:t.name}

@jwt_required
def post(self):
    t = Testcase(
        name = request.json['name'],
        description = request.json['description'],
        data = request.json['data']
    )
    # # # 新增数据
    db.session.add(t)
    db.session.commit()
    return {
        'msg': 'ok'
    }
@jwt_required
def put(self):
    pass

@jwt_required
def delete(self):
    pass

class Hello(Resource):
def get(self):
return {‘hello’: ‘world’}

class LoginApi(Resource):
def get(self):

    return "hello world"

def post(self):
    #todo:查询数据库
    username=request.json.get('username',None)
    print(123456)
    print(username)
    #通常密码不能原文存储
    password=request.json.get('password',None)
    print('--------')
    print(password)

    user=User.query.filter_by(username=username,password=password).first()
    print(789)
    print(user)
    print(type(user))
    if user is None:
        return jsonify(
            errcode=1,
            errmsg='用户名或者密码不对'
        )
    else:
        return {
            'errcode':0,
            'errmsg':'ok',
            'username':user.username,
            'token': create_access_token(identity=user.username)

        }

class TaskApi(Resource):
#get里面只是一个获取,真正的执行是在post里面。这是task任务属性所决定的。
def get(self):
pass

@jwt_required
def post(self):
    #todo:用例获取
    testcases=request.json.get('testcases',None)
    jenkins['testcase'].invoke(securitytoken='11bc63a77c1808e57f2dfeaafef3fc7f31',
                               build_params={
                                   'testcases':testcases

                               })
    #todo:调度Jenkins


    #todo:异步处理
    pass

api.add_resource(TestCaseApi, ‘/testcase’)
api.add_resource(LoginApi, ‘/login’)
api.add_resource(TaskApi, ‘/task’)
api.add_resource(Hello, ‘/’)
if name == ‘main’:
app.run(debug=True)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值