@pytest.mark.parametrize()和parametrize在接口测试时遇到坑

先讲需求:有一个接口, 可以提交单个订单的数据, 也可以提交500条订单的 数据, 使用 的是 json 格式传递数据.
在当时, 我并不清楚 list 嵌套 dict 这样的 json串是不是可以直接用于requests库的post 请求中, 因为我 用了 type()来检测这种列表嵌套字典的数据, 类型是 list .
我就想按照需求文档里的格式 [ {} , {} , {}…] 这样的格式做出一个数据类型是这样的 Josn 数据, 百度了很久, 都没找到方法.
我尝试了用dict做一个容器,来存储数据, 发现造出来的数据, 全部都是500个 key: {value} 这样的.和我实际上 想要的不一样.

然后我做了很多尝试, 用 list 做容器,发现做来的还是list 嵌套dict 这样的 json串(python中类型是list).

这个时候,我就怀疑自己走入了一个误区, 文档里 [ {} , {} , {}…]
是对的, 那么说明是可以接收这样的数据的,那么肯定是某个方面我想错了.

既然现在代码走不通,那就可以通过postman 来验证一下,
@pytest.mark.parametrize()和parametrize在接口测试时遇到坑_第1张图片
在postman里, 是可以传递这样的json串发送请求并且成功了的, 那么代码那边肯定有问题.

@pytest.mark.parametrize()和parametrize在接口测试时遇到坑_第2张图片

最后在确认了list 嵌套dict 这样的数据是可以的情况下, 先进行反序列化, 提取 josn文件里的全部数据(因为不需要拆分,需要一次就提交整个json文件里的内容)
@pytest.mark.parametrize()和parametrize在接口测试时遇到坑_第3张图片
然后我使用pytest的参数化方法, @pytest.mark.parametrize(“info”, data1)
发现自动把数据进行了拆分, 我本来是想一次传递500份订单的, 结果给拆分成了500次的单条请求.
然后我就使用@parameterized.expand(data1) 来获取,
在测试方法处, 就只写一个参数,表示接收传递过来的整个json文件对象,
然后就把参数放在post请求中进行提交, 之后就是根据接口返回的信息排错了,是没有传递请求头,还是没有传递token, 把这些都解决后,就OK 了

@pytest.mark.parametrize()和parametrize在接口测试时遇到坑_第4张图片

你可能感兴趣的:(python)