接口测试:接口测试是测试系统组件间接口的一种测试。接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等。(来自某百科)
笔者看了,对于接口测试还是一知半解,就像你要了解饭一样,你只了解从超市买回来,放进电饭煲,然后就等待饭好就行了??
你不需要知道大米是怎么来的吗?
同理,如果你想要测试好接口,那么你肯定需要知道接口是怎么被制造出来的,他的原理是怎么样的呢?
本文就将带着大家利用于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的人:
然后我们再查询一下这个人
见数据库中的表:
是不是完美的实现了查询和添加的功能。
增删改查,我们实现了增和查,还有改和删,这些有兴趣的朋友可以试一下。
欢迎大家指证!!!!
【2023性能测试完整版】这可能是B站讲得最好的软件测试课程(Jmeter 接口测试实战 Loadrunner Tomcat综合教程)软件测试面试、自动化测试。
感谢每一个认真阅读我文章的人!!!
作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。
文档获取方式:
加入我的软件测试交流群:822269834免费获取~(同行大佬一起学术交流,每晚都有大佬直播分享技术知识点)
这份文档,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!
以上均可以分享,只需要你搜索vx公众号:程序员雨果,即可免费领取