python接口开发异常_用 Python 实现单接口层面的快速异常测试

背景介绍

起初并不想转向 Python,没有花括号来包括一个代码块总感觉怪怪的,C、C#、VBA、Java、PHP 都有的,也许是见过了太多有花括号的代码。但是 Python 的火热让人不得不前去一探究竟,再说我想尝试的机器学习也是它的一大优势,所以在去年 10 月份终于开始了 Python 之旅。

Python 2 终将成为过去,选择 Python 3 开始是非常不错的,也是必然的。配置了 Python 3 + PyCharm,单元测试选择了 pytest。学习一门语言必定要先看一下它的语法,Python 语法还是比较 easy 的,很快我就开始了解 Python 特有的一些概念了,什么装饰器、生成器、列表推导式、用 with 子句自动管理资源等等,以及一些 Pythonic 的写法。过了一段时间就慢慢地开始搭建接口自动化测试框架了,一切似乎并不难。接口签名方式、配置变量、常用方法逐一攻略,很快就在小模块的持续集成上小试牛刀了,效果还不错。

一直觉得当初用 PHP 完成的《单接口层面的异常测试》脚本是个非常棒的作品,所以非常想用 Python 也来实现一套,否则我总免不了寝食难安。就这样在自我驱动的情况下逐步开始“搬迁”那个令我欣赏的作品。

我们都知道接口测试中最大的一个痛点就是异常测试(确切来说是单个接口层面的异常测试):

一个接口少则有一两个字段,多则十几二十多个字段;

每一个字段都包含各种异常,字段缺失、字段值包含特殊字符、字段值格式不正确、字段值长度过短或者超长等;

频繁的改动字段值和发送请求,耗时且繁琐。

所以该脚本主要完成两个任务:

必填字段逐一缺失的异常请求

每一个字段无效值的异常测试

做了简单介绍之后,我们看看如何用 Python 来实现相同功能的脚本吧。

成果展示

完成单接口层面的异常测试脚本最重要的一步,就是解析 dict 格式的 body 请求体,比如有下面这样一个请求参数:

{

"app": "app_llperTuvn9e18928",

"merchant_order_no": "202062004066865",

"amount": 100,

"currency": "cny",

"client_ip": "218.64.183.95",

"subject": "order subject 测试",

"body": "order body 测试",

"balance_settlement": {

"user": "b_user@gmail.com"

}

}

就是一个 dict 类型的请求 body(真正请求时会通过 json.dumps 转为 json string),可我又怎么知道哪个字段是必填哪个是选填呢?每个字段又是什么类型呢?长度范围是多少呢?

所以我们需要把它改造成下面的格式:

{

"app": "string,f_20, app_llperTuvn9e18928",

"merchant_order_no": "string,8~20,202062004066865",

"amount": "int,1~1000000000,100",

"currency": "string,f_cny,cny",

"client_ip": "string,f_127.0.0.1," + util.gen_ip(),

"subject": "string,1~32,order subject 测试",

"body": "string,1~128,order body 测试",

"balance_settlement": {

"user": "string,0~64,b_user@gmail.com",

"user_fee": "o_int,0~1000000000,1"

}

}

这样一来我们就可以回答上面的哪些疑问了,至于为什么,请看一下下面的规则:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值