接口測試:接口測試是測試系統組件間接口的一種測試。接口測試主要用於檢測外部系統與系統之間以及內部各個子系統之間的交互點。測試的重點是要檢查數據的交換,傳遞和控制管理過程,以及系統間的相互邏輯依賴關系等。(來自某百科)
筆者看了,對於接口測試還是一知半解,就像你要了解飯一樣,你只了解從超市買回來,放進電飯煲,然后就等待飯好就行了??
你不需要知道大米是怎么來的嗎?
同理,如果你想要測試好接口,那么你肯定需要知道接口是怎么被制造出來的,他的原理是怎么樣的呢?
本文就將帶着大家利用於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的人:
然后我們再查詢一下這個人:
見數據庫中的表:
是不是完美的實現了查詢和添加的功能。
增刪改查,我們實現了增和查,還有改和刪,這些有興趣的朋友可以試一下。
歡迎大家指證!!!!