@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 来验证一下,
在这里插入图片描述
在postman里, 是可以传递这样的json串发送请求并且成功了的, 那么代码那边肯定有问题.

在这里插入图片描述

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

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值