如何测试接口?首先你得知道如何开发接口。

接口测试:接口测试是测试系统组件间接口的一种测试。接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等。(来自某百科)html

 

笔者看了,对于接口测试仍是只知其一;不知其二,就像你要了解饭同样,你只了解从超市买回来,放进电饭煲,而后就等待饭好就好了??前端

 

你不须要知道大米是怎么来的吗?python

 

同理,若是你想要测试好接口,那么你确定须要知道接口是怎么被制造出来的,他的原理是怎么样的呢?sql

 

本文就将带着你们利用于python开发一些简单的restful风格的接口。数据库

 

其中实用到:flask,flask-restful。这些读者均可以使用pip进行安装。json

 

数据库用的是sqlite3。flask

 

首先咱们须要建立数据:api

一、建立数据库:testrestful

二、在数据库中建立一张表:stuapp

三、建立二个字段:name(ps:这里设置成不能重复,固然现实中是能够重复的,这里只做为演示用。)、age(年龄)

表如图:

 

既然有了数据库,那么咱们确定须要对数据库存进行增删除改查。所以笔者封装了一个数据库操做的类。

  

import sqlite3


# 将游标获取的元组根据数据库列表转为字典表
def make_dicts(cursor, row):
    return dict((cursor.description[i][0], value) for i, value in enumerate(row))

class SqlHelper(object):
    def __init__(self):
        self.path = r"e:\test\test.db"

    # 打开数据库链接
    def get_db(self):
        db = sqlite3.connect(self.path)
        db.row_factory = make_dicts
        return db

    # 执行SQL语句,但不返回结果
    def execute_sql(self, sql, prms=()):
        c = self.get_db().cursor()
        c.execute(sql, prms)
        c.connection.commit()

    # 执行用于选择数据的SQL语句。
    def query_sql(self, sql, prms=(), one=False):
        c = self.get_db().cursor()
        result = c.execute(sql, prms).fetchall()
        c.close()
        return (result[0] if result else None) if one else result


db = SqlHelper()

注:

一、make_dicts  这个方法是为了让咱们在查询数据的时候,返回给咱们的结果,以字典的形式返回。其中key是列名,value是咱们查询的值。

二、类里面封装了二个方法,其中一个执行不返回结果,一个是返回结果的。返回结果的有一个参数one。默认为false,指返回全部数据。若是为true则返回第一条数据。

 

接下来,咱们就正式开始接口的开发了,这里咱们开发二个接口:

一、查询学生信息

  path:'/get/stu/'

  parameter :name (学生的名字,不能为空)

二、添加学生到数据库

  path:'/add/stu/'

  parameter:name(学生的名字,不能为空)

        age(学生的年龄,不能为空)

 

from flask import Flask, jsonify
from flask.ext.restful import reqparse, Api, Resource
from db import db

app = Flask(__name__)
app.debug = True
api = Api(app)


parser_get = reqparse.RequestParser()
parser_get.add_argument('name', type=str, required=True, help='名字不能为空。')

#此方法主要是为了判断是否有重名数据
def is_data(name):
    sql = "select * from stu where name = ?"
    return db.query_sql(sql,(name,))


class get_stu(Resource):

    def get(self):
        data = parser_get.parse_args()
        name = data.get('name')
        if is_data(name) :
            return jsonify(is_data(name))
        return jsonify({'msg':'未找到此用户'})

parser_add = reqparse.RequestParser()
parser_add.add_argument('name', type=str, required=True, help='名字不能为空。')
parser_add.add_argument('age',type = int ,required=True, help = '年龄不能为空')

class add_stu(Resource):

    def post(self):
        data = parser_add.parse_args()
        name = data.get('name')
        age = data.get('age')
        if is_data(name):
            return jsonify({'msg':'名字重复了'})
        sql_i = "insert into stu(name,age) values (?,?)"
        db.execute_sql(sql_i,(name,age))
        return jsonify({'msg':'添加成功'})

api.add_resource(get_stu, '/get/stu/')
api.add_resource(add_stu, '/add/stu/')

if __name__ == '__main__':
    app.run()

以上就是关于查询和添加二个接口开发的所有代码,这里就很少解释了,由于笔者在另外一篇中对于这方面有更加详细的说明,喜欢的朋友能够移步:点击跳转

 

这样,咱们的接口就开发完成了,接下来你们就能够在前端调用这些接口,来增长和查询数据了。

 

见效果:

添加一个叫bokeyuan的人:

而后咱们再查询一下这我的:

 

见数据库中的表:

是否是完美的实现了查询和添加的功能。

 

增删改查,咱们实现了增和查,还有改和删,这些有兴趣的朋友能够试一下。

 

欢迎你们指证!!!!

相关文章
相关标签/搜索