• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

requests库post方法传json类型的data

武飞扬头像
东方不败之鸭梨的测试笔记
帮助1

在做接口自动化数据驱动时,发现传进去的data和用postman测试用的数据一样,

但是响应结果不一致。

学新通

  1.  
    @data(ADD_DATA['test_add_department_003'],ADD_DATA['test_add_department_004'], ADD_DATA['test_add_department_005'])
  2.  
    @unpack
  3.  
    @write_case_log()
  4.  
    def test_add_department_2(self, req_data, res_key, res_value, status_code, des):
  5.  
    print(self._testMethodName des)
  6.  
    r = HttpReq.post(self, url=self.url,data=req_data)
  7.  
    # print("状态码为:" r)
  8.  
    print("响应文本为:" r.text)
  9.  
    response = json.loads(r.text)
  10.  
    print(response)
  11.  
    self.assertEqual(response[res_key], res_value)
  12.  
    self.assertEqual(r.status_code, status_code)
  13.  
    print("{}执行成功".format(self._testMethodName))

学新通 运行代码得到的响应结果应该和postman的一致,但是不一致,问题在哪里?

原因:在传数据时,没有将data传为json格式。

 解决办法:传data时进行json.dumps(data)

  1.  
    @data(ADD_DATA['test_add_department_003'],ADD_DATA['test_add_department_004'], ADD_DATA['test_add_department_005'])
  2.  
    @unpack
  3.  
    @write_case_log()
  4.  
    def test_add_department_2(self, req_data, res_key, res_value, status_code, des):
  5.  
    print(self._testMethodName des)
  6.  
    r = ETReq.post(url=self.url, data=json.dumps(req_data))
  7.  
    # print("状态码为:" r)
  8.  
    print("响应文本为:" r.text)
  9.  
    response = json.loads(r.text)
  10.  
    print(response)
  11.  
    self.assertEqual(response[res_key][0], res_value)
  12.  
    self.assertEqual(r.status_code, status_code)
  13.  
    print("{}执行成功".format(self._testMethodName))

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgfjhbf
系列文章
更多 icon
同类精品
更多 icon
继续加载