04-13 实战方案easyorder 接口自动化测试(上)
测试开发 实战方案
引言:
安装软件开发标准,开发的文档包括接口说明文档,
这个文档也是接口测试的重要依据。
这里的easyorder是一个教学专用的简易订单项目。
一边开发接口,一边做接口测试,最后还能完成接口自动化测试,就是这个文章的目的。
正文
easyorder接口说明文档
三.接口详细说明
1.1/order/order
接口名称
查询全部订单接口
URL
/orderlist
支持格式
json
参数说明
参数名称 数据类型 描述 是否必填
“order” json 外层订单标签 是
id 字符串 订单编号 是
data 字符串 订单详情
date 字符串 订单创建的时间
type 整数 订单的类型
amount 浮点型 订单金额
commnet 字符串 订单其他的备注
HTTP请求方法
GET/POST/DELETE
返回结果说明
status : 操作结果状态
【ok】【failed】
实列说明GET请求:
请求:
{
"order": {
"id":1008,
}
}
返回结果:
{
"status": "OK"
}
实列说明POST请求:
请求:
{
"order": {
"id":1008,
"data":{
"date": "2019-10-11",
"type": 1,
"amount": 200.01,
"commnet":"",
"reserve1": "",
"reserve2": ""
}
}
}
返回结果:
{
"status": "OK"
}
1.2/order/orderlist
接口名称
订单接口
URL
order
支持格式
json
参数说明
参数名称 数据类型 描述 是否必填
\ \ \ \
HTTP请求方法
GET/POST/
返回结果说明
status : 操作结果状态
【ok】【failed】
实列说明GET/POST请求:
请求:
{
}
返回结果:
{
"data": {
"0": "order1003.json",
"1": "order1004.json",
"2": "order1005.json",
"3": "order1006.json",
"4": "order1007.json",
"5": "order1008.json"
},
"message": "OK",
"status": 1
}
easyorder接口实现代码
from flask import Flask
from flask import request
from flask import render_template
from flask import jsonify
from views import bp
import json,os
import settings
app = Flask(__name__)
# 注册蓝图到flask app 中
app.register_blueprint(bp.bp_bp)
app.add_url_rule('/bp', endpoint='index')
@app.route("/",methods=["GET", "POST"])
def index():
return render_template("index.html")
@app.route("/order/orderlist",methods=["GET","POST"])
def get_orlderlist():
index =0
for files in os.listdir(settings.dbpath):
print("file",files)
settings.output_body_pass["data"][index]=files
index+=1
print("获取的文件列表; \n", settings.output_body_pass)
return jsonify(settings.output_body_pass)
@app.route("/order/order",methods=["GET","POST","DELETE"])
def order_action():
if request.get_json()["order"]["id"] is not None:
tmp_order_id = request.get_json()["order"]["id"]
print("settings.idnumber ", tmp_order_id)
order_path_list = settings.dbpath + settings.file_prefix + str(tmp_order_id) + settings.file_suffix
print("order_path_list ", order_path_list)
else:
print("order id not exsits ")
if request.method == 'GET':
with (open(file=order_path_list,mode='r')) as fp:
read_content = fp.read()
print(type(json.loads(read_content)))
return jsonify(json.loads(read_content))
elif request.method == 'POST':
data = request.get_json()
with (open(file=order_path_list, mode='w')) as fw:
json.dump(data, fw, indent=2, sort_keys=True, ensure_ascii=False)
return jsonify(settings.output_body_pass)
elif request.method == 'DELETE':
if os.path.exists(order_path_list):
os.remove(order_path_list)
return jsonify(settings.output_body_pass)
else:
print("Not exists ",order_path_list)
return jsonify(settings.output_body_pass)
else:
print("error http method")
if __name__=="__main__":
app.run("0.0.0.0", 5000, debug=True)
总结
1 接口说明文档是确保接口测试和接口自动化测试的重要依据。
这个文档可以是静态的word文档,也可以是html动态文档。
2 接口测试用例的格式,目前在行业里并没有统一。
接口测试用例的设计方法,主要还是和普通测试用例设计的方法类似。
不同点是会增加接口实现原理和性能等高级要求。
3 在实现自动化测试之前,务必先让手工测试通过。
思考与延伸:
1 接口测试是白盒测试吗?
2 接口测试在你所在的公司测试活动占比多少?
3 在做接口测试的时候,测试数据该如何处理?

浙公网安备 33010602011771号