如何测试接口?首先你得知道如何开发接口。(代码片段)

魂牵梦琳 魂牵梦琳     2022-11-06     170

关键词:

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

 

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

 

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

 

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

 

本文就将带着大家利用于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的人:

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

 

见数据库中的表:

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

 

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

 

欢迎大家指证!!!!

 

如何编写高质量的测试用例?这些方法论一定得知道...(代码片段)

单元测试用例单元测试用例有人总结出来了编写用例的3A原则,分别是Arrange:初始化测试对象或者准备测试数据Act:调用被测方法Assert:断言给一个例子[TestMethod]publicvoidWithdraw_ValidAmount_ChangesBalance()//arrangedoublecurrentBalance=10.0;do... 查看详情

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

接口概述:接口是Java语言中的一种引用类型,是方法的"集合",所以接口的内部主要就是定义方法,包含常量,抽象方法(JDK7及以前),额外增加默认方法和静态方法(JDK8),额外增加私有方法(jdk9)。接口的定义,它与定义类方式... 查看详情

微服务测试之接口测试和契约测试(代码片段)

...接口被多个消费者调用更是常态,那么提供方接口的变更如何快速、高效、无遗漏的通知给消费者呢?另外,当一个service同时被多个使用者调用,如何保证对service的修改可以让其它所有使用者造成的影响都能被感知到?这些问... 查看详情

接口测试之-postman(代码片段)

...,这个时候我们就遇到2个问题,其一是接口中的时间戳如何得到?其二就是对于现在常用的md5加密操作如何在postman中使用代码实现呢?  下面我们以一个具体的接口例子来进行说明。  首先来看看我们的接口文档信息,如... 查看详情

如何测试接口(代码片段)

...理过程,还包括处理的次数。④接口测试的方法接口测试如何做呢?一般已经上线接口都会自动化掉,关于接口自动化,可以使用现成的接口框架;对于正在开发或还未达到上线条件的接口,就需 查看详情

如何使用postman带token测试接口?(代码片段)

首先打开postman、是这样的界面我们的需求是这样的、实现登录之后返回token、然后请求其他接口时在header头中带上token信息、OK、接下来我们这样操作:现在登录没有操作token、只是接口给我们返回了token值、我们需要把这个to... 查看详情

postman测试swagger类接口技巧(代码片段)

...口文档,直接使用swagger记录所有接口信息。那么:1.我们如何更快的测试动辄300+数量的接口,如何分组管理和维护这些接口?2.接口中需要随机函数,传参,为了安全需要token,cookie,Authorization等认证,如何解决? 解决方案:1... 查看详情

vector你得知道的知识(代码片段)

vector的基本使用和模拟实现一、std::vector基本介绍1.1常用接口说明std::vector是STL中的一个动态数组容器,它可以自动调整大小,支持在数组末尾快速添加和删除元素,还支持随机访问元素。以下是std::vector常用的接口及... 查看详情

我发现了一款高效管理接口文档的神器(代码片段)

...自动同步接口在线接口文档接口调试总结痛点如果你负责测试的项目是一个前后端分离的项目。回忆下是不是有如下场景:某个项目开发完成,接口文档发布在了swagger上,前后端各自进行开发。此时你负责这个项目的服务端测试。... 查看详情

我发现了一款高效管理接口文档的神器(代码片段)

...自动同步接口在线接口文档接口调试总结痛点如果你负责测试的项目是一个前后端分离的项目。回忆下是不是有如下场景:某个项目开发完成,接口文档发布在了swagger上,前后端各自进行开发。此时你负责这个项目的服务端测试。... 查看详情

不会代码的时候,如何使用jmeter完成接口测试(代码片段)

1.接口测试简介接口测试是测试系统组件间接口的一种测试。接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑... 查看详情

接口自动化面试4(代码片段)

...数依赖上个接口的返回数据-参数关联5.依赖于登录的接口如何处理-token和session的管理6.依赖第三方的接口如何处理-mock模拟数据返回7.不可逆的操作,如何处理,比如删除一个订单这种接口如何测试-造数据8.接口产生的垃圾数据... 查看详情

如何编写接口测试用例?

接口测试用例如何编写?下面简单给大家讲解一下。接口测试用例是目前软件开发中不可或缺的一个重要部分,因此编写接口测试用例同样重要。接口测试用例的作用非常明显,它能够帮助我们了解产品正在考验、调... 查看详情

接口测试总结(代码片段)

一、什么是接口以及接口的种类?1、做接口测试,首先要了解什么是接口,接口是一种抽象性的概念,编程接口(API)通俗的解释应该是:一个组件提供给开发者进行编程使用的,通过代码可以与之沟通的入口,用于连接连个... 查看详情

接口测试“八重天”---httpclient(代码片段)

...便是协议,其发送数据包和接收数据包的过程,其次便是如何在测试中去发送去解析,不论是通过代码还是工具也好,抽空学习一下HttpClient。HttpClient基本概念  (官方地址:http://hc.apache.org/httpclient-3.x/)  HttpClient是 查看详情

接口开发(代码片段)

开发接口:1、mock接口:模拟接口,在别的接口没有开发好的时候,你需要用它2、知道服务端数据交互,你看接口就知道是怎么实现的3、查看数据一、开发第一个接口(1)首先要安装一下flask:pipinstallflaskflask是一个较轻量级的we... 查看详情

接口测试常用工具及测试方法(代码片段)

首先,什么是接口呢?接口一般来说有两种,一种是程序内部的接口,一种是系统对外的接口。系统对外的接口:比如你要从别的网站或服务器上获取资源或信息,别人肯定不会把数据库共享给你,他... 查看详情

ios如何提升,首先得知自己的处境!(欢迎评论留言)(代码片段)

聊聊行情?为什么总有人在乎旁人的看法而忽略自己的初衷?虽然iOS开发市场说不上好但也绝不算坏,想没想过那些煽风点火说iOS不行的人在做什么?真的转行从头开始?错、大错特错!在劝退你的同时他们会... 查看详情