httprunner版本:4.X
脚本格式:pytest格式
近期使用httprunner框架写自动化脚本的时候遇到一个情况,需要测试接口的入参有250多行。由于字段的数量过多,导致写的时候不想一个字段一个字段的传,于是就考虑,从别的接口获取一个入参所需字典,然后把这个字典直接作为入参。
一开始我先直接通过extract提取字典为xxx_dict,以$xxx_dict进行使用
发现入参变成了这个样子{"A":"{'a': '1','b': '2','c': '3'}"}这种格式,格式存在以下两个问题:
1、json格式无法识别单引号的,所以传给接口的时候,接口就会报错
2、key值提取出来后,使用的时候就变成了字符串,所以整个字典都变成了字符串
针对以上两个问题进行解决,思路如下:
第一步:在debugtalk写一个函数,接收一个字典,使用json.dumps将其转换成json格式,使用后入参变成以下{"A":"{"a": "1","b": "2","c": "3"}"},解决了第一个问题
第二步:这个问题想了好久,最后发现使用httprunner框架的setup_hook函数。利用其“在用例执行之前,入参已经确定之后”的特点,把"{和}"替换成{和}。使用后入参变成以下{"A":{"a": "1","b": "2","c": "3"}}
这样接口就能识别提取出来的字典了。
暂时没有时间写个例子附上代码,先分享思路吧