python接口自动化学习二十之API框架设计

一、API:
1,单个API的验证(简单)可以用pytest+tavern+yaml来验证
a,功能 :
          参数为空
          边界值
          参数必输项
         参数的类型
         业务
b,安全 :请求参数有没有加密,有没有对应的密钥,有没有增加反爬虫的机制,接口是否能无限制发送请求
c,性能 :并发请求
2,外部API的验证:支付 物流  可以mockserver外部接口。
3,基于业务场景的全链路验证.
a,复杂性,基于产品形态。
b,数据怎么解决
c,业务关联性---动态参数的解决
d,业务覆盖

二、Tavern

Tavern是用于HTTP,MQTT或其他协议的基于pytest的高级API测试框架。我们为什么需要选择它,因为它具备如下的优势:

1、轻量级,简单,高效,即使你没有任何的代码基础,也是可以很轻松高效的完成API的自动化测试

2、容易编写,阅读和理解,它是基于yaml文件来编写API的测试点的,所以看起来很直观

3、可以测试基于HTTP协议以及MQTT和其他的协议

4、它的生态在不断发展和完善中

  • Tavern环境:

1,pip install pyyaml
2,pip intall pytest==4.5.0
3,  pip install tavern

yaml文件规范

1,区分大小写

2,缩进表示层级关系,尽量使用空格,不要使用tab

3,注释用#

4,支持的数据格式:对象键值对、数组

三、案例

from flask import Flask,jsonify
from flask_restful import Api,Resource,reqparse

app=Flask(__name__)
api=Api(app)

class LoginView(Resource):
    def get(selfs):
        return {'status':0,'msg':'ok','data':'this is a login page'}
    def post(self):
        parser=reqparse.RequestParser()
        parser.add_argument('username',type=str,required=True,help='用户名不能为空')
        parser.add_argument('password',type=str,required=True,help='账户密码不能为空')
        parser.add_argument('age',type=int,help='年龄必须为正整数')
        parser.add_argument('sex',type=str,help='性别只能是男或是女',choices=['女','男'])
        args=parser.parse_args()
        return jsonify(args)

api.add_resource(LoginView,'/login/',endpoint='login')
if __name__ == '__main__':
    app.run(debug=True)

如何对上面的接口进行测试,创建test_login.tavern.yaml

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值