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

Posted 魂牵梦琳

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何测试接口?首先你得知道如何开发接口。相关的知识,希望对你有一定的参考价值。

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

 

笔者看了,对于接口测试还是一知半解,就像你要了解饭一样,你只了解从超市买回来,放进电饭煲,然后就等待饭好就行了??

 

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

 

同理,如果你想要测试好接口,那么你肯定需要知道接口是怎么被制造出来的,他的原理是怎么样的呢?

 

本文就将带着大家利用于python开发一些简单的restful风格的接口。

 

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

 

数据库用的是sqlite3。

 

首先我们需要创建数据:

1、创建数据库:test

2、在数据库中创建一张表:stu

3、创建二个字段: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()

注:

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

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

 

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

1、查询学生信息

  path:\'/get/stu/\'

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

2、添加学生到数据库

  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的人:

然后我们再查询一下这个人:

 

见数据库中的表:

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

 

增删改查,我们实现了增和查,还有改和删,这些有兴趣的朋友可以试一下。

 

欢迎大家指证!!!!

 

以上是关于如何测试接口?首先你得知道如何开发接口。的主要内容,如果未能解决你的问题,请参考以下文章

java开发三年,Java中接口的使用你得知道,不然你凭什么涨薪

Java性能优化推荐书!Java中接口的使用你得知道

Java中接口的使用你得知道,附面试答案

vector你得知道的知识

如何保证接口测试的覆盖率?

如何使用 Apifox 来管理测试你的接口