问题背景:
如果问题背景类似,可能会有参考价值。
我的接口自动化(pytest框架)用例是用Excel表格来管理,格式如下图所示。
业务背景是一个列表接口,通过请求传参来进行数据的筛选,然后发现我所传的筛选条件并没有生效。
结论:
先上结论,读取Excel的请求数据为以下格式,传参时发生了转义
'{"job_id": "3"}'
使用json.loads(data)
import json
data = '{"job_id": "3"}'
params = json.loads(data)
将其转为以下格式,即解决了这个问题
{"job_id": "3"}
但需要注意,这种解决方式,在传参为空的用例中,参数需要写{},否则会报错影响断言。
大佬们要是有更好的解决方式,评论教教我(认真脸)。
排查过程:
1. 对比相同接口、相同传参,分别使用自动化脚本和postman进行测试,发现我的自动化脚本传参未生效,postman的传参是生效了的。
2. 打印传参未发现异常(其实<class 'str'>已经有问题了)
3. 查询服务器日志,自动化脚本的日志中传参为:
"query":{"\"job_id\":_\"3\"":""}
postman正常请求的传参为:
"query":{"job_id":"3"}
4. 以为是requests库请求的问题,尝试不读取Excel表,直接写入参数,发现是正常的。看来requests请求是没问题的,有问题的还是我这拉胯的代码。