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 在做接口测试的时候,测试数据该如何处理?

posted @ 2019-10-25 23:26  小猿取经-林海峰老师  阅读(210)  评论(0)    收藏  举报