接口測試:接口測試是測試系統組件間接口的一種測試。接口測試主要用於檢測外部系統與系統之間以及內部各個子系統之間的交互點。測試的重點是要檢查數據的交換,傳遞和控制管理過程,以及系統間的相互邏輯依賴關係等。(來自某百科)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的人:
而後咱們再查詢一下這我的:
見數據庫中的表:
是否是完美的實現了查詢和添加的功能。
增刪改查,咱們實現了增和查,還有改和刪,這些有興趣的朋友能夠試一下。
歡迎你們指證!!!!