Python 接口测试 - 参数测试

离是伞中仙 · 2024年05月17日 · 最后由 离是伞中仙 回复于 2024年05月21日 · 4257 次阅读

接口测试分为:参数测试和业务逻辑测试

这里把接口参数测试展开讨论下,一个接口:请求 + 响应。例如一个登录接口:
{
user:"admin",password:"123456"
}

假设参数限制:

参数名 参数类型 长度
user string 64 字符
password string 64 字符

这里有两个测试点,参数类型测试,长度测试。
展开参数类型测试来说,因为使用 python 调用接口,我枚举了 string,int,float,tuple,list,dict 数据类型传入登录接口。
在输入除了 string 类型的参数时,预期结果都会报 400 参数类型错误。
可是今天遇到一个问题,我在输入元组(“1”)忘记加逗号调用接口,接口调用成功。虽然后面加了,就报参数错误符合预期。

但是同时引发了一些思考:

1.这几种数据类型在转变为 json 格式传入接口之后是什么数据类型呢?
2.tuple 类型是 python 的概念,为什么传入也会报参数错误呢?
3.以 python 语言中的数据类型作为参数测试类型枚举真的覆盖全面吗?

邀请大家一起讨论下。

最佳回复

1、编程语言里的数据类型要转换为 json,有一个叫 序列化 的过程。这个过程会把变成语言里的数据类型,按照一定规则转为 json 里的数据类型。python 里一般用自带的 json 库进行序列化(具体要看你们研发的代码)。

这个库的 python 转 json 的转换规则如下:https://docs.python.org/3/library/json.html

2、按照上面规则,turple 应该转为了 json 的 array,而你的接口规定的参数类型是 string,自然对不上

3、覆盖的时候,覆盖 json 支持的格式就好。甚至有些场景下,没太大必要做这个测试,因为各个语言的反序列化其实是有一定的兼容性的,比如 json 传了 string 类型的"3",语言中对应的类型是 int,会尽量转为 int。这部分转换是各个库自动完成的,开发压根不用写代码,风险也低。所以在做参数覆盖的时候,相比单纯从技术层面去设计,更建议从业务层面去设计。业务层面的才是研发要写代码实现的,也是风险更高的。

共收到 2 条回复 时间 点赞

1、编程语言里的数据类型要转换为 json,有一个叫 序列化 的过程。这个过程会把变成语言里的数据类型,按照一定规则转为 json 里的数据类型。python 里一般用自带的 json 库进行序列化(具体要看你们研发的代码)。

这个库的 python 转 json 的转换规则如下:https://docs.python.org/3/library/json.html

2、按照上面规则,turple 应该转为了 json 的 array,而你的接口规定的参数类型是 string,自然对不上

3、覆盖的时候,覆盖 json 支持的格式就好。甚至有些场景下,没太大必要做这个测试,因为各个语言的反序列化其实是有一定的兼容性的,比如 json 传了 string 类型的"3",语言中对应的类型是 int,会尽量转为 int。这部分转换是各个库自动完成的,开发压根不用写代码,风险也低。所以在做参数覆盖的时候,相比单纯从技术层面去设计,更建议从业务层面去设计。业务层面的才是研发要写代码实现的,也是风险更高的。

陈恒捷 回复

讲的真好

离是伞中仙 关闭了讨论 05月27日 10:56
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册