API测试平台开发实战

iAPI项目实现接口调试和接口用例保存,接口列表查询功能。

技术栈 python+flask+Vue

 项目地址:

git clone -b api https://github.com/five3/python-sdet.git

用例保存 

 http_save()实现用例保存,如果请求方法为get,则查询用例。请求方法不是get,则保存用例
用力的数据来自request.json,即请求接口的数据。

def http_save():
    """
    用例保存、用例信息获取处理函数
    """
    if request.method == 'GET':
        ret = get_api(request.args.get('id', 0))
    else:
        ret = save_api(request.json)
        print(request.json)

    return jsonify({
        "code": 0,
        "success": True,
        "data": ret,
        "msg": None
    })
def save_api(data):
    if data.get('id'):
        sql = '''update http_api set name=:name, url=:url, method=:method, body=:body, headers=:headers, fileList=:fileList, validate=:validate, express=:express where id=:id'''
    else:
        sql = '''insert into http_api (name, url, method, body, headers, fileList, validate, express) values (:name, :url, :method, :body, :headers, :fileList, :validate, :express)'''

    data['fileList'] = json.dumps(data['fileList'])
    get_db().query(sql, **data)

用例调试

http_debug()函数,获取请求数据,调用HTTPRequest处理,并返回response。

def http_debug():
    """用例调试处理函数"""
    hr = HTTPRequest(request.json)
    hr.do_request()
    hr.validate()

    return jsonify({
        "code": 0,
        "data": {
            "result": hr.result,
            "log": hr.log
        },
        "msg": ""
    })

用例列表

http_list()接口返回用例列表,其中get_api_list方法,获取请求参数,pagesize和pagenum信息,返回查询到的列表数据。
def http_list():
    """
    用例列表查询处理函数
    """
    return {
        "code": 0,
        "success": True,
        "data": get_api_list(request.args),
        "msg": None
    }

用例运行

http_run()接口获取用例数据,并返回运行结果。

并且每运行一次接口,就会向接口运行日志数据库插入一条数据。

def http_run(aid):
    """
    用例运行处理函数
    """
    row = get_api(aid)
    print(row)
    hr = HTTPRequest(row)
    hr.do_request()
    hr.validate()
    api_log(aid, hr.result, hr.log)

    return jsonify({
        "code": 0,
        "data": {
            "result": hr.result,
            "log": hr.log
        },
        "msg": ""
    })

用例日志

http_api_log()返回用例日志查询响应结果。

可以看到,每个接口返回的是json格式的结果,而返回的数据是由对于方法处理的。

def http_api_log(aid):
    """
    用例日志查询处理函数
    """
    ret = get_log_by_api_id(aid)
    return jsonify({"code": 0, "data": ret, "msg": ""})

根据id查询数据库,并返回查询到的结果。 

def get_log_by_api_id(aid):
    sql = '''select content from http_api_log where api_id=:id order by id desc limit 1'''
    row = get_db().query(sql, id=aid).first(as_dict=True)

    return row['content'] if row else '["没有查找到用例日志"]'

日志列表接口

http_log_list()返回日志列表
@log_context()
def http_log_list():
    """
    用例日志查询处理函数
    """
    return get_log_list()
def get_log_list():
    data = request.args
    page = int(data.get('pageNum', 1))
    size = int(data.get('pageSize', 10))
    cond = warp_query(data)
    sql = f'''select b.*, a.name, a.url, a.method from http_api a, http_api_log b where a.id=b.api_id {cond} order by b.id desc'''
    conn = get_db()
    rows, total = query_with_pagination(conn, sql, param=data, page=page, size=size)

数据库对接

get_db()接收数据库连接信息,返回db。
def get_db():
    """数据库连接信息"""
    conn_info = {'db_host': 'localhost',
                 'db_name': 'iapi',
                 'db_user': 'root',
                 'db_passwd': 'root'}
    return DBPool.get_conn(**conn_info)

mysql+pymysql://root:root@localhost:3306/iapi?charset=utf8 

get_db().query(sql, **data)调用records库的query执行数据库查询操作。

 详细内容见《Python测试开发入门与实践》6.4

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值